今天我想运行ss -tpla
命令来查看网络连接,令我惊讶的是,我得到了。然后我检查了命令error: unknown option -t
的位置:ss
~$ whereis ss
ss: /bin/ss /usr/local/bin/ss /usr/share/man/man8/ss.8.gz
如您所见,我有两个ss
命令,一个在/bin/ss
,另一个在/usr/local/bin/ss
。
我可能将另一个同名的应用程序从源代码安装到了/usr/local/bin/ss
。我不记得它是什么时候使用的,但它不是我想要运行的命令。奇怪的是,当我运行
ss -tpla
它将命令重定向到/usr/local/bin/ss
我可以使用以下方式运行实际ss
命令
/bin/ss -tpla
我认为/bin
它比其他路径优先。
我的问题是什么决定了系统路径的优先级以及我如何覆盖它们。
答案1
您可以/bin/ss
通过创建符号链接来赋予优先级。
sudo mkdir /opt/ss
sudo ln -s /bin/ss /opt/ss/
并添加/opt/ss
到你的路径中前 /usr/local/bin
export PATH=/opt/ss:$PATH
$ echo $PATH
/opt/ss:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games
为了使此永久生效,请添加到~/.profile
PATH=/opt/ss:$PATH
答案2
你的 PATH 确实如此。
$ echo $PATH
/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:
/bin:/usr/games:/usr/local/games
请不要只更改路径(它可能会更改的不仅仅是“ss”)。使用
/bin/ss -tpla