我有一个从特定目录中调用的通用命令。该程序中只有一个可执行文件位于/ bin中,并且当前工作目录对于正确运行它非常重要。该脚本会影响运行在其目录中的文件。
现在,我还有一个自定义的shell脚本,该脚本在一个目录中执行某些操作,但是我需要像在另一个目录中一样调用上述命令。
您如何在Shell脚本中执行此操作?
Answers:
您可以使用cd
内建函数,也可以使用pushd
和popd
内建函数。例如:
# do something with /etc as the working directory
cd /etc
:
# do something with /tmp as the working directory
cd /tmp
:
您可以像使用其他任何命令一样使用内置命令,并且可以在脚本中随意更改目录上下文。
cd -
POSIX Shell中也有一个可更改回先前的目录。这就是说,(一)pushd
和popd
被真正用于交互使用,及(b)它并不总是安全的假设,你可以cd
回到开始的地方,尤其是在复杂的子系统,它可以在内部使用权限限制(见stackoverflow.com/questions/ 10555284 /…)。
popd
。
:
在这里解释符号的含义?
man bash
: : [arguments]
无效;无效。该命令除了扩展参数和执行任何指定的重定向外,什么也不做。返回状态为零。
(cd /path/to/your/special/place;/bin/your-special-command ARGS)
current_dir=$PWD;cd /path/to/your/command/dir;special command ARGS;cd $current_dir;
current_dir
等于您的变量pwd
cd
您需要运行命令的位置cd
回到我们的变量current_dir
@apieceofbart的另一种解决方案
pushd && YOUR COMMAND && popd
pushd && YOUR COMMAND && pulld
popd
不是pulld
。