执行命令

source 和 .

source和 . 这两个都是shell自带的内建命令,这两个命令是是完全一样的。

使用 type source 和 type . 可以看出它们都是内建命令;使用 help source 和 help . 也可以看出这两个命令的作用一模一样。

source和. 在当前shell中执行,不会启动一个新的子shell进程。所有在脚本中设置的变量将成为当前Shell的一部分。

修改.bashrc后使其生效时,只能使用source或. ,因为设置的环境变量需要在本shell中生效。若使用其他的命令,会在子进程中export环境变量,这对于父shell是没有影响的,因此并不会生效。

sh、bash和dash

sh 另起一个子shell进程,在子shell中执行脚本里面的语句。该子shell继承父shell的环境变量,但不会继承普通变量,也就是没有被 export的变量。

dash Shell 比bash Shell小的多,符合POSIX标准。Ubuntu继承了Debian,所以从Ubuntu 6.10开始默认是dash shell。

而sh是到bash或dash的软连接,所以本质上还是bash或dash来解析这shell脚本。

./

./ 是用来执行一切可执行文件的方法,不仅仅可以用来执行shell脚本。使用 ./ 执行的文件必须是可执行文件,文件必须有 x 权限。

./ 也会另起一个shell进行可执行文件的执行,在子shell中执行脚本里面的语句。该子shell继承父shell的环境变量,但不会继承普通变量,也就是没有被 export的变量。

posted @ 2022-08-02 22:49  煮茶听风雨  阅读(140)  评论(0编辑  收藏  举报