Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/wcf/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Bash 使用./script.sh和..启动脚本之间的区别/script.sh_Bash_Scripting_Shell - Fatal编程技术网

Bash 使用./script.sh和..启动脚本之间的区别/script.sh

Bash 使用./script.sh和..启动脚本之间的区别/script.sh,bash,scripting,shell,Bash,Scripting,Shell,请告诉我在bashshell中使用 /script.sh和/script.sh?第一个要求文件设置+x标志。第二种方法使用。命令又名“source”,如klausbyskov所说,第一种形式要求文件设置其可执行权限位 但更重要的是,第一个表单在一个单独的进程中执行脚本(与启动它的shell不同、独立,并且无法对其进行更改)。第二种形式使初始shell直接从文件中运行命令(就好像您在shell中键入了命令,或者好像它们包含在执行“寻源”的脚本中一样) 包含FOO=bar的脚本;export-FOO

请告诉我在bashshell中使用
/script.sh
/script.sh

第一个要求文件设置+x标志。第二种方法使用。命令又名“source”,如klausbyskov所说,第一种形式要求文件设置其可执行权限位

但更重要的是,第一个表单在一个单独的进程中执行脚本(与启动它的shell不同、独立,并且无法对其进行更改)。第二种形式使初始shell直接从文件中运行命令(就好像您在shell中键入了命令,或者好像它们包含在执行“寻源”的脚本中一样)

包含
FOO=bar的脚本;export-FOO
不会在运行第一个变量的shell中创建导出的
FOO
环境变量,但会在运行第二个变量的shell中创建这样的变量


第二种形式(“sourcing”)有点像C中的
#include

虽然这是事实,但更重要的区别是“source”在当前shell实例中读取并执行文件。执行脚本将启动一个新的shell实例(如shebang行中指定的),在其中执行脚本。@Dan,是的,这是正确的,我发布的链接中也解释了这一点。这是
-x
权限标志,而不是bash-x选项,只是为了清楚起见。