环境
Linux CentOS7
问题
每次切换所处的目录时,总是要输入很多字符,非常繁琐,希望通过脚本之类的方式快速切换到指定目录。
方案
失败方案
思路:希望通过 shell 脚本实现,代码如下:
#! /bin/bash
sudo cd ~/XXX/YYY
结果:实践发现这样无法解决,为脚本添加可执行权限并执行脚本后发现,当前所处的目录没有任何变化。
原因:在 shell 脚本中,不能直接更改用户所处的文件夹,因为 shell 脚本是在子进程中运行的,该子进程无法影响父进程(即启动该脚本的 shell 环境)的状态。在 shell 脚本中更改所处的文件夹只对该脚本程序有效,对于启动该脚本程序的 shell 环境并没有影响。
- 例如,如果在 脚本的 cd 命令后添加
mkdir CCC
命令,会发现在~/XXX/YYY
目录下出现了 CCC 文件夹。
成功方案
在 ~/.bashrc
中定义一个名为 cduser 的函数,代码如下:
function cduser() {
cd ~/XXX/YYY
}
执行 source ~/.bashrc
命令,之后直接输入 cduser 就可以跳转到 ~/XXX/YYY
目录下。