执行shell脚本而不更改其环境

时间:2017-05-23 12:31:02

标签: bash shell sh

我在3个不同的目录中有3个sh脚本。

我没有进入每个目录并执行每个脚本,而是想从一个中心脚本(位于上面的超级文件夹中)触发所有3个脚本。

我尝试使用/bin/bash /path/to/script,但这会将超级文件夹位置视为可以使用的位置。

因此我尝试在执行前先进入每个文件夹cd folder1,但这也无效。

我只想在不改变其本地环境的情况下触发这3个脚本

3 个答案:

答案 0 :(得分:1)

请尝试以下方法:

( cd dir1; ./script1 )
( cd dir2; ./script2 )
( cd dir3; ./script3 )

请注意,保存/恢复主脚本当前目录需要()。

答案 1 :(得分:0)

使用子shell时,子shell退出当前shell时不会更改

( cd path ; ./script )

答案 2 :(得分:0)

执行此操作的* nix方法是使用您最初的完整路径或相对路径运行脚本。无论原始用户PWD是什么,理想情况下脚本应该做同样的事情。如果您确实需要知道the working directory of the script,原因如采购相邻文件,请注意它会增加一些复杂性,并且可能无法在古老的Bash版本中使用。