我正在编写一个需要cd
到某个位置的 shell 脚本。有什么办法可以回到之前的位置,也就是cd
执行之前的位置吗?
问问题
18358 次
4 回答
64
于 2012-05-18T15:57:11.527 回答
4
如果您在脚本中运行,您还可以在子进程中运行部分脚本,该子进程将具有 $PWD 的私有值。
# do some work in the base directory, eg. echoing $PWD
echo $PWD
# Run some other command inside subshell
( cd ./new_directory; echo $PWD )
# You are back in the original directory here:
echo $PWD
这有其优点和缺点......它确实很好地隔离了目录,但是如果你经常这样做,产生子进程可能会很昂贵。(编辑:正如@Norman Gray 在下面指出的那样,相对于脚本其余部分发生的任何事情,产生子进程的性能损失可能并不是很昂贵)
为了可维护性,我通常使用这种方法,除非我能证明脚本因此而运行缓慢。
于 2012-05-18T16:16:04.193 回答
1
您可以将 PWD 回显到变量中,然后将 cd 返回到该变量。可能会比较安静。
于 2012-05-18T16:05:49.057 回答
0
另一种选择是您可以添加到 .bashrc 中的一小组函数,这些函数允许您转到命名目录:
# cd /some/horribly/long/path
# save spud
# cd /some/other/horrible/path
# save green
...
# go spud
/some/horribly/long/path
这在目录导航生产力工具中有记录,但基本上涉及在上述情况下将“pwd”的输出保存到命名的助记符(“spud”和“green”)中,然后 cd'ing 到文件的内容。
于 2014-02-03T13:47:19.930 回答