同じパスを複数回追加しなくても、システム全体または個々のユーザーのために$ PATHにエントリを追加する方法が必要です。
これを望む理由の1つは、ログインを必要としないものに追加することができ、呼び出しを行わない.bashrc
(たとえば)を使用するシステムでより便利です。lightdm
.profile
私は問題について知っています重複を消去する方法$PATHでは、しかし重複したアイテムを削除したくありません。。私は方法が欲しいパスがまだ存在しない場合にのみパスを追加してください。
ベストアンサー1
追加する新しいパスは次のとおりです。
new=/opt/bin
new
その後、POSIXシェルを使用してすでにパスにあることをテストし、そうでない場合は追加できます。
case ":${PATH:=$new}:" in
*:"$new":*) ;;
*) PATH="$new:$PATH" ;;
esac
コロンの使用に注意してください。コロンがない場合は、new=/bin
パターンが同じであるため、すでにパスにあると想定できます/usr/bin
。 PATHには通常多くの要素がありますが、PATHの要素が0個と1個の特殊な場合も処理されます。 PATHに最初に要素がない場合(空)、空の場合は${PATH:=$new}
それを使用してPATH
処理されます$new
。このようにパラメータのデフォルト値を設定することは、すべてのPOSIXシェルの機能です。セクション2.6.2を参照してください。POSIX ドキュメント.)
呼び出し可能関数
便宜上、上記のコードを関数に入れることができます。この関数はコマンドラインで定義でき、永続的に使用するにはシェルのinitスクリプトに入れます(bashユーザーの場合は次のようになります~/.bashrc
)。
pupdate() { case ":${PATH:=$1}:" in *:"$1":*) ;; *) PATH="$1:$PATH" ;; esac; }
このパス更新機能を使用して現在のPATHにディレクトリを追加するには:
pupdate /new/path