LINUX与UNIX SHELL编程指南 书中提到这么一段:
3.4 嵌入shell变量
Brourne shell 有一些预留的环境变量名,这些变量名不能用作其他用途。通常在/etc/profile中建立这些嵌入的环境变量,但也不完全是,这取决于用户自己。
1. CDPATH
改变目录路径变量,保留一系列由冒号隔开的路径名,用于cd命令。如果设置了CDPATH,cd一个目录时,首先查找CDPATH,如果CDPATH指明此目录,则此目录成为当前工作目录。例子如下:
$ CDPATH=:/home/dave/bin:/usr/local/apps; export CDPATH.
如果要
$ cd apps
3.4 嵌入shell变量
Brourne shell 有一些预留的环境变量名,这些变量名不能用作其他用途。通常在/etc/profile中建立这些嵌入的环境变量,但也不完全是,这取决于用户自己。
1. CDPATH
改变目录路径变量,保留一系列由冒号隔开的路径名,用于cd命令。如果设置了CDPATH,cd一个目录时,首先查找CDPATH,如果CDPATH指明此目录,则此目录成为当前工作目录。例子如下:
$ CDPATH=:/home/dave/bin:/usr/local/apps; export CDPATH.
如果要
$ cd apps
cd命令首先在CDPATH中查找目录列表,如果发现apps,则它成为当前工作目录。
如果你经常使用linux cd命令进入特定父目录下的子目录, 你可将该父目录设置为CDPATH, 执行linux cd命令进入子目录时无需再指定父目录路径. 讲解如下:
[ljf@localhost ~]$ pwd
/home/ljf
[ljf@localhost ~]$ cd mail
-bash: cd: mail: No such file or directory
[linux cd命令注释: 这里是在当前目录下查找mail目录]
[ljf@localhost ~]$ export CDPATH=/etc
[ljf@localhost ~]$ cd mail
/etc/mail
[linux cd命令注释:这里是在/etc目录下查找mail目录, 而不是当前目录]
[ljf@localhost mail]$ pwd
/etc/mail
[ljf@localhost mail]$
为了使该基础目录永久改变, 增加代码行 export CDPATH=/etc到你的 ~/.bash_profile文件即可.
类似PATH变量, 你可以在CDPATH变量中添加多个目录项, 以”:”分隔开, 如:
export CDPATH=.:~:/etc:/var
该技巧非常有帮助,在执行linux cd命令进入子目录时就无需再指定父目录路径了。