我只想编写一个可以更改目录的脚本。
我将以下命令放在文件中 /home/alex/pathABC
#!/bin/sh
cd /home/alex/Documents/A/B/C
echo HelloWorld
我做了
chmod +x pathABC
在终端中,在中/home/alex
,我运行./pathABC
,但是输出仅为HelloWorld
,当前目录未更改。
那怎么了?
正如其他人所解释的那样,目录是在脚本的子进程中更改的,而不是在从中调用脚本的终端进程中更改的。子进程死亡后,您将返回到原来的终端。
几种选择:
1.符号链接
将符号链接放在您想要轻松访问的长途之家中
$ ln -s /home/alex/Documents/A/B/C ~/pathABC
然后使用以下命令访问目录:
$ cd ~/pathABC
2.别名
在您的〜/ .bashrc中放置一个别名:
alias pathABC="cd /home/alex/Documents/A/B/C"
(从这里开始)
3.功能
创建一个更改目录的函数,该函数将在终端进程中运行,然后可以更改其目录。
(从这里开始)
4.避免像小孩一样奔跑
编写脚本而不是运行脚本。源代码(由.
或完成source
)导致脚本在同一shell中执行,而不是在其自己的子shell中运行。
$ . ./pathABC
5. CD-able vars
在中设置cdable_vars
选项,~/.bashrc
并在目录中创建一个环境变量:
shopt -s cdable_vars
export pathABC="/home/alex/Documents/A/B/C"
那你可以用 cd pathABC
(从这里开始)
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句