web-dev-qa-db-ja.com

/ binと/ usr / local / binのパス間の優先順位をどのようにオーバーライドできますか?

今日、ss -tplaコマンドを実行してネットワーク接続を確認したかったのですが、驚いたことにerror: unknown option -tを取得しました。次に、ssコマンドの場所を確認しました。

 ~$ whereis ss
 ss: /bin/ss /usr/local/bin/ss /usr/share/man/man8/ss.8.gz

ご覧のとおり、2つのssコマンドがあり、1つは/bin/ssに、もう1つは/usr/local/bin/ssにあります。

同じ名前の別のアプリケーションをソースコードから/usr/local/bin/ssにインストールした可能性があります。いつ、どのように使用したかは覚えていませんが、実行したいコマンドではありません。奇妙なことは、実行すると

 ss -tpla  

コマンドを/usr/local/bin/ssにリダイレクトします。実際のssコマンドは次のコマンドで実行できます。

 /bin/ss  -tpla

/binが他のパスよりも優先されると思いました。

私の質問は、システムパスの優先順位を決定するものと、それらをオーバーライドする方法です。

2
kenn

シンボリックリンクを作成して、/bin/ssに優先順位を付けることができます。

Sudo mkdir /opt/ss
Sudo ln -s /bin/ss /opt/ss/

/opt/ssをパスに追加しますbefore/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
Tom Piccirello

PATHが行います。

$ echo $PATH
/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:
/bin:/usr/games:/usr/local/games

パスを変更しないでください(「ss」以外にも変更される可能性があります)。つかいます

/bin/ss  -tpla
2
Rinzwind