跳至主要內容

优先级

大约 2 分钟

优先级

关于Linux服务器里 /usr/bin 目录和 /usr/local/bin目录open in new window

linux bin目录优先级,Linux命令执行优先级open in new window

/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