• Linux学习笔记


    Linux学习笔记 - shell 学习记录

    一、简介

    shell是linux命令集的概称,是属于命令行的人机界面。Shell 是一个用C语言编写的程序,它是用户使用Linux的桥梁。

    二、shell 程序执行

    如何执行shell程序呢?

    有两种方法:以hello文件为例说明

    #!/bin/bash
    # This is a very simple example
    echo Hello World

    1、种是显式制定 BASH 去执行:
    $ bash hello 或
    $ sh hello (这里 sh 是指向 bash 的一个链接,“lrwxrwxrwx 1 root root 4 Aug 20 05:41 /bin/sh -> bash”)

    2、可以先将 hello 文件改为可以执行的文件,然后直接运行它

    此时由于 hello 文件第一行的 "#! /bin/bash" 的作用,系统会自动用/bin/bash 程序去解释执行 hello 文件的:

    $ chmod u+x hello
    $ ./hello

    此处没有直接 “$ hello”是因为当前目录不是当前用户可执行文件的默认目录,而将当前目录“.”设为默认目录是一个不安全的设置。

    需要注意的是,BASH 程序被执行后,实际上 Linux 系统是另外开设了一个进程来运行的。

    三 、source命令

    source命令也称为“点命令”,也就是一个点符号(.),是bash的内部命令。

    功能:使Shell读入指定的Shell程序文件并依次执行文件中的所有语句

    source命令通常用于重新执行刚修改的初始化文件,使之立即生效,而不必注销并重新登录。

    用法:

    source filename 或 . filename

    source命令(从 C Shell 而来)是bash shell的内置命令;点命令(.),就是个点符号(从Bourne Shell而来)是source的另一名称。

    source filename 与 sh filename 及./filename执行脚本的区别在那里呢?

    1.当shell脚本具有可执行权限时,用sh filename与./filename执行脚本是没有区别得。./filename是因为当前目录没有在PATH中,所有"."是用来表示当前目录的。

    2.sh filename 重新建立一个子shell,在子shell中执行脚本里面的语句,该子shell继承父shell的环境变量,但子shell新建的、改变的变量不会被带回父shell,除非使用export。

    3.source filename:这个命令其实只是简单地读取脚本里面的语句依次在当前shell里面执行,没有建立新的子shell。那么脚本里面所有新建、改变变量的语句都会保存在当前shell里面。

    四、技巧

    1、shell获取当前目录,并将其赋值给其他变量

    假设当前目录为/home/abc/
    
    Path=$(pwd)/test
    
    Path=/home/abc/test
    #!/bin/bash
    basepath=$(cd `dirname $0`; pwd)
    echo  $basepath
    #解释说明:
    # dirname $0,取得当前执行的脚本文件的父目录
    #cd `dirname $0`,进入这个目录(切换当前工作目录)
    #pwd,显示当前工作目录(cd执行后的)
    #!/bin/bash
    path=`pwd`
    echo $path

    参考资料:

    Linux——shell脚本的基础篇(变量定义、变量种类、变量操作)

    Linux Bash Shell快速入门

    编写Shell脚本的最佳实践

    Linux上的Shebang符号(#!)

    linux shell 和linux 命令的区别?windows shell 和 windows 命令呢?

    Linux如何退出tail 命令

    source命令

  • 相关阅读:
    学习笔记九
    学习笔记八
    python学习笔记七
    学习笔记七
    仿优酷项目
    orm框架分析——仿优酷项目
    python操作MySQL
    数据库—子查询,视图,事务
    数据库—表查询
    mysql表关系
  • 原文地址:https://www.cnblogs.com/wangwangfei/p/13457294.html
Copyright © 2020-2023  润新知