请告诉我在启动脚本时bash shell的区别是什么
./script.sh
和. ./script.sh
?
答案 0 :(得分:17)
正如klausbyskov所说,第一种形式要求文件具有可执行权限位。
但更重要的是,第一个表单在一个单独的进程中执行脚本(与启动它的shell不同,独立,无法进行更改)。第二种形式导致初始shell直接运行文件中的命令(就好像你已经将它们输入shell中,或者好像它们包含在执行'sourcing'的脚本中)。
包含FOO=bar; export FOO
的脚本将不会在运行第一个变体的shell中创建导出的FOO
环境变量,但它会在运行第二个变体的shell中创建这样的变量。
第二种形式('sourcing')有点像C中的#include
。
答案 1 :(得分:4)
第一个要求文件设置+ x标志。第二个使用了。命令又名“源”,描述为here。