Shell:如何为一个执行命令设置工作目录,而不影响一行中的其他命令

时间:2015-03-14 09:57:29

标签: linux bash shell

我有两个代码文件。 ./main需要在工作目录./../SomeDir/中运行,而./another需要在当前工作目录中运行。我使用管道./main | ./another。如果我可以定义语法,我想用as:

RunWithWorkingDirectory ./main ./../SomeDir/ | ./another

那我怎么办呢?任何帮助将不胜感激。

2 个答案:

答案 0 :(得分:4)

您可以使用子shell将目录更改限制为特定的命令组,方法是将命令括在括号中:

(cd path; ./command)

请注意,子shell中的任何变量赋值都不会反​​映在父shell中。

这也适用于管道,例如:

(cd path; ./command) | ( cd path2; ./command2)

答案 1 :(得分:2)

如果您的脚本中有一小部分内容,那么user000001的解决方案就很棒了。如果你想要它更重要的部分,我可以想到两个解决方案: