关于shell来源、命令及应用

运行shell脚本的方法:

  1. 切换到shell脚本所在的目录(此时,称为工作目录)执行shell脚本:

    得先使用chmod命令赋予脚本执行权限

    1
    2
    cd /data/shell
    ./hello.sh

    ‘./‘ 代表当前目录,或者也可以绝对路径的方式去执行 shell脚本:

    1
    /data/shell/hello.sh
  1. 在目录中直接使用bash 或sh 来执行bash shell脚本:

    用此法可以不必事先设定shell的执行权限,甚至都不用写shell文件中的第一行(指定bash路径)。此乃是将hello.sh作为参数传给sh(bash)命令来执行的。这时不是hello.sh自己来执行,而是被人家调用执行,所以不要执行权限也不用指定bash路径。

    1
    2
    3
    4
    5
    cd /data/shell

    bash hello.sh

    sh hello.sh
  2. 在当前的shell环境中执行 shell脚本:

    前面两种方法执行shell脚本时都是在当前shell(称为父shell)开启一个子shell环境,此shell脚本就在这个子shell环境中执行。shell脚本执行完后子shell环境随即关闭,然后又回到父shell中。此法是在当前shell中执行的。

    1
    2
    3
    4
    5
    cd /data/shell

    source hello.sh

    . hello.sh

实测:

在我自己的环境中测试情况如下:
目录中有一个为2.sh的文件,内容如下:

#!/bin/bash
read -p "put a char: " achar
echo -e "your put is $achar"

执行以上各命令,终端显示如下:

root@skyqin-PC:/home/skyqin/Documents/software# ./2.sh
put a char: a
your put is a
root@skyqin-PC:/home/skyqin/Documents/software# echo $achar

root@skyqin-PC:/home/skyqin/Documents/software/2.sh
put a char: a
your put is a
root@skyqin-PC:/home/skyqin/Documents/software# echo $achar

root@skyqin-PC:/home/skyqin/Documents/software# source 2.sh
put a char: s
your put is s
root@skyqin-PC:/home/skyqin/Documents/software# echo $achar
s
root@skyqin-PC:/home/skyqin/Documents/software# . 2.sh
put a char: e
your put is e
root@skyqin-PC:/home/skyqin/Documents/software# echo $achar
e