我刚刚在SO上找到了这个非常有用的shell脚本,但遗憾的是它不适用于Mac OS X 10.5.
这是有问题的脚本(为方便起见,将其复制):
#!/bin/bash
LIMIT=$1
P=$PWD
for ((i=1; i <= LIMIT; i++))
do
P=$P/..
done
cd $P
Run Code Online (Sandbox Code Playgroud)
我试图echo $P在最后,它正在返回正确的道路,但cd $P似乎仍然没有工作.
所以我尝试手动输入P="some/path"并cd $P在终端中工作.
我不明白为什么相同的命令在脚本中不起作用.这可能是安全的事吗?
有什么建议?
我在Linux上遇到了同样的问题,实际上,如果我正确理解我在搜索后发现的内容,就会发生以下情况:
该命令在子shell中启动,在子shell中路径发生变化,您没有看到更改,因为当脚本完成后,您将返回到起始(父)shell.
我通过在我的.bashrc中将有用的脚本作为函数来解决这个问题,如下所示:
up(){
#code goes here
}
Run Code Online (Sandbox Code Playgroud)
另一种选择是每次启动脚本时都会获取脚本,但我更喜欢第一个脚本.