我有两个代码文件。 ./main
需要在工作目录./../SomeDir/
中运行,而./another
需要在当前工作目录中运行。我使用管道./main | ./another
。如果我可以定义语法,我想用as:
RunWithWorkingDirectory ./main ./../SomeDir/ | ./another
那我怎么办呢?任何帮助将不胜感激。
答案 0 :(得分:4)
您可以使用子shell将目录更改限制为特定的命令组,方法是将命令括在括号中:
(cd path; ./command)
请注意,子shell中的任何变量赋值都不会反映在父shell中。
这也适用于管道,例如:
(cd path; ./command) | ( cd path2; ./command2)
答案 1 :(得分:2)
如果您的脚本中有一小部分内容,那么user000001的解决方案就很棒了。如果你想要它更重要的部分,我可以想到两个解决方案:
pushd / popd
组合(仅限 bash )。请参阅http://ss64.com/bash/pushd.html和http://ss64.com/bash/popd.html。
在脚本开头(pwd
)保存路径,最后保存cd
。请参阅http://ss64.com/bash/pwd.html。