パスを変数に追加または追加するために、一連の便利な関数を使用します。関数は、「pathfuncs」と呼ばれるcontribファイルでBashの配布tarballに入っています。
- add_pathは、エントリをPATH変数の最後に追加します
- pre_pathは、PATH変数の先頭にエントリを追加します
- del_pathは、どこにいてもPATH変数からエントリを削除します
2番目の引数として変数を指定すると、PATHの代わりにその変数が使用されます。
便宜上、ここにあります:
# is $1 missing from $2 (or PATH) ?
no_path() {
eval "case :\$${2-PATH}: in *:$1:*) return 1;; *) return 0;; esac"
}
# if $1 exists and is not in path, append it
add_path () {
[ -d ${1:-.} ] && no_path $* && eval ${2:-PATH}="\$${2:-PATH}:$1"
}
# if $1 exists and is not in path, prepend it
pre_path () {
[ -d ${1:-.} ] && no_path $* && eval ${2:-PATH}="$1:\$${2:-PATH}"
}
# if $1 is in path, remove it
del_path () {
no_path $* || eval ${2:-PATH}=`eval echo :'$'${2:-PATH}: |
sed -e "s;:$1:;:;g" -e "s;^:;;" -e "s;:\$;;"`
}
これらをbashスタートアップファイルに追加する場合、次のようにPATHに追加できます。
pre_path $HOME/bin
add_path /sbin
add_path /usr/sbin
または、別の変数を指定します。
pre_path $HOME/man MANPATH
pre_path $HOME/share/man MANPATH
add_path /usr/local/man MANPATH
add_path /usr/share/man MANPATH
rcファイルでこのメソッドを使用して、pre_pathsを最初に、add_pathsを2番目に配置します。すべてのパスの変更が一目で理解しやすくなります。もう1つの利点は、行が十分に短いため、必要に応じて行の末尾にコメントを追加できることです。
また、これらは関数であるadd_path $(pwd)
ため、現在のディレクトリをパスに追加するなどのコマンドラインから対話的に使用できます。
PATH=foo:$PATH
毎回成長を続けておりsource ~/.bashrc
、それexec bash
以降も役に立たないため、間違っているよう$PATH
ですexport
。