PATH变量及修改
- 我们来找茬(写定时执行时的插曲)
A、vim aaa.sh:
TEMP_PATH="home/users/wanggaijing01/abc"
echo "the current path is $TEMP_PATH"
cd $TEMP_PATH
touch test.txt
问题:sh aaa.text后,报aaa.sh: line 6: cd: home/users/wanggaijing01/abc: No such file or directory...
原因:因为缺少根目录/,应该为TEMP_PATH="/home/users/wanggaijing01/abc"
/:表示根目录,也可作目录分隔符;/etc表示根目录下的etc目录
~:表示用户home目录,以用户lalala登录后,~表示/home/lalala
B、vim aaa.sh:
PATH="/home/users/wanggaijing01/abc"
echo "the current path is $PATH"
cd $PATH
touch test.txt
问题:sh aaa.sh后,报aaa.sh: line 7: touch: command not found。。。
原因:因为PATH是系统变量,自己重定义了PATH,所以找不到touch。。。
PATH:命令行用echo $PATH可以查看当前系统路径。执行命令时会到PATH路径下去寻找。如which touch,可看到/opt/compiler/gcc-4.8.2/bin/touch
./: 有的命令如rinetd,需要./rinetd,加./表示在当前目录下寻找该命令,不加会默认去PATH下寻找,由于找不到,所以会报command not found。
- PATH路径修改---(尚未完全弄懂)
查看当前PATH:echo $PATH
跟PATH有关的文件:/etc/profile(系统环境设置,登录shell), ~/.bash_profile(用户环境设置,登录shell), ~/.bashrc(用户环境,非登录shell)
这几个文件按一定顺序执行。profile修改后,需要source来生效。
修改/etc/profile(放弃):试了下不是很好用,root下source后,exit root然后再次登入,并不生效。
临时修改PATH:命令行执行export PATH=/bin:$PATH,只在当前窗口有效,退出后失效。
修改work用户的PATH变量(可行):1、vim ~/.bash_profile 2、export PATH=/bin:$PATH 3、source ~/.bash_profile.
(场景是有个服务需要低版本的grep,而当前的grep版本较高,/bin/grep版本较低,所以把/bin放在前边)
修改后: