优先级
大约 2 分钟
优先级
/bin 存放所有用户皆可用的系统程序,系统启动或者系统修复时可用(在没有挂载 /usr 目录时就可以使用)
/sbin 存放超级用户才能使用的系统程序
/usr/bin 存放所有用户都可用的应用程序
/usr/sbin 存放超级用户才能使用的应用程序
/usr/local/bin 存放所有用户都可用的与本地机器无关的程序
/usr/local/sbin 存放超级用户才能使用的与本地机器无关的程序
安装的文件一般在/usr/local/bin
内创建软连接
例如
ln -sf /usr/local/python3/bin/python3.10 /usr/local/bin/python3
ln -sf /usr/local/python3/bin/pip3 /usr/local/bin/pip3
可以echo $PATH
来查看当前执行环境的优先级
echo $PATH
# /usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games:/snap/bin
# 这里 /usr/local/bin 的优先级比 /usr/bin 高
如果发现不符,则可能是有别名或者hash表没更新
命令执行优先级:
别名 > 内部命令 > hash表中的命令 > 外部命令
- 别名
- alias
- hash表
- 系统初始hash表为空,当外部命令执行时,默认会从PATH路径下寻找该命令,找到后会将这条命令的路径记录到hash表中,当再次使用该命令时,shell解释器首先会查看hash表,存在将执行之,如果不存在,将会去PATH路径下寻找
- 利用hash缓存表可大大提高命令的调用速率
使用type name
可以查看执行命令的类别,例如
type cd
# cd is a shell builtin
# 这里表明cd是内部命令
type python3
# python3 is hashed (/usr/local/bin/python3)
# 这里表明python3是hash表中的命令
使用hash -r
清除缓存,使用hash -d name
清除名为name
的命令的缓存
使用unalias name
临时解除名为name
的命令的别名
也可以去home目录下的.bashrc
看看有没有alias
,删掉以永久解除
Powered by Waline v3.0.0-alpha.10