Dav*_*ton 1 bash bash-scripting
自从搜索这个以来,我已经看到了这个答案,但最初我写了这个脚本:
for i in `seq 1 $1`;
do cd ../;
done;
Run Code Online (Sandbox Code Playgroud)
它不会更改目录。这是为什么,运行为
./updir.sh 5
Run Code Online (Sandbox Code Playgroud)
如您所见,运行脚本会在子 shell 中创建一个复制的环境,您所做的任何更改(例如设置目录或环境变量)仅影响此子 shell 环境,而不影响调用 shell。
为了从脚本对当前 shell 进行更改,您必须使用sourceor.命令在当前 shell 中运行脚本:
. ./updir.sh 5
Run Code Online (Sandbox Code Playgroud)
您可以使用别名自动执行此操作:
alias updir='. ./updir.sh'
Run Code Online (Sandbox Code Playgroud)
或者,您可以使用函数而不是脚本:
updir()
{ for i in `seq 1 $1`;
do cd ../;
done
}
Run Code Online (Sandbox Code Playgroud)