which命令介绍
- which 可以查看命令所在的路径
- which查询的路径是通过以下的路径,进行查询
[root@aminglinux-01 ~]# echo $PATH/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/root/bin
- 这个路径又以 : 分割 如果命令在以上路径内,可以不用输入绝对路径,真正使用命令是通过绝对路径进行操作
which例子
[root@hf-01 ~]# which ls 查看ls所在路径alias ls='ls --color=auto' /usr/bin/ls[root@hf-01 ~]# ls /usr/bin/ls /usr/bin/ls[root@hf-01 ~]# cp /usr/bin/ls /tmp/ls2 复制/usr/bin/ls路径到/tmp/ls2下[root@hf-01 ~]# /tmp/ls2 使用命令/tmp/ls2查看结果,会发现和ls命令出来的结果一样anaconda-ks.cfg[root@hf-01 ~]# ls anaconda-ks.cfg[root@ahf-01 ~]# ls2 执行ls2命令,会提示未找到命令,因为这个命令不在上述目录里面-bash: ls2:未找到命令[root@hf-01 ~]# PATH=$PATH:/tmp/ 若想直接运行ls2命令,需要改变环境变量 重新给PATH赋值[root@hf-01 ~]# echo $PATH 会发现多出了/tmp//usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/root/bin:/tmp/[root@hf-01 ~]# ls2 这时在运行发现就可以执行了anaconda-ks.cfg[root@hf-01 ~]# which ls2 /tmp/ls2
新建的环境变量在终端失效了
- 这时,打开一个终端,执行ls2命令,会发现又失效了 (打开终端方法,鼠标右击-复制SSH渠道)
- 若想一直生效,
解决方法
1.在系统 vi /etc/profile (在开机、打开终端都会加载这个命令)2.结尾处加上PATH=$PATH:/tmp/ 并保存退出3.在使用cat /etc/profile查看下是否加载成功4.这时echo $PATH会得到/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/tmp/:/root/bin现在不管哪一个终端都可以执行ls2命令,都会执行成功
解除ls2命令,方法
若不想要这个ls2命令了,有两种方法。
- 方法一:重新赋值
PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/root/bin (去除:/tmp/)这时在执行ls2命令,就会失效
- 方法二:重新编辑文件/etc/profile
快捷键dd,删除PATH=$PATH:/tmp/并:wq保存在去新建终端,执行echo $PATH就会发现/tmp/目录消失了