システム PATH 変数が重複しています (snap/bin:/snap/bin)

システム PATH 変数が重複しています (snap/bin:/snap/bin)

echo $PATH重複出力を実行するとスナップ/bin:/スナップ/bin最後に現れて、珍しいようです。

 /usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games:/snap/bin:/snap/bin

この重複は望ましくないのでしょうか? もしそうなら、どうすれば変更できますか?

答え1

おそらく、 または~/.bashrcには、がまだ にあるかどうかを事前に確認せずに に~/.profile追加するコマンドがあります。/snap/bin$PATH$PATH

変数内の重複エントリは、$PATHにあるコマンドを実行するときには影響を及ぼさないことに注意してください$PATH。一方、 にないコマンドを実行すると、速度低下が発生する可能性があります$PATH(重複エントリが存在すると、コマンド検索が無駄に 2 回以上実行されるため)。ただし、この速度低下を認識するのは難しいと思います。変数を視覚的に確認したい場合にも、重複エントリは少し煩わしいものです$PATH

の重複エントリを避けたい場合は$PATH、ファイルにこのコマンドを追加することができます~/.profile(つまり、環境変数に最適な場所):

# remove duplicated paths in PATH variable
PATH="$(printf "%s" "$PATH" | awk -v RS=':' '!a[$1]++ {if (NR > 1) printf RS; printf $1}')"

このコマンドは、変数awk内のすべての項目$PATH(文字によって区切られています:) を識別し、$PATH重複したフォルダーの再追加を回避して変数を再構築するために使用されます。また、変数内のフォルダーの元の種類も保持されます$PATH

お好みのテキスト エディターで開くことができます~/.profile。ターミナルで開く場合は、sudoユーザーの所有物なので必要ありません。

関連情報