
スクリプトにパスを追加する必要がありますbash
が、複数回実行できます。
export PATH=${OPENSHIFT_HOMEDIR}/app-root/runtime/bin/:${PATH}
私はそのパスを追加し続けたくありません。そうでない場合は、どのように追加しますか$PATH
?
答え1
まず、追加するパスがすでに変数の一部であることを確認してください。
[[ ":$PATH:" != *":/path/to/add:"* ]] && PATH="/path/to/add:${PATH}"
/path/to/add
すでに存在している場合は何も$PATH
起こらず、そうでない場合は始めに追加されます。
結局、必要ならばPATH=${PATH}:/path/to/add
代わりに使用してください。
編集する:あなたの場合は次のとおりです。
[[ ":$PATH:" != *":${OPENSHIFT_HOMEDIR}/app-root/runtime/bin:"* ]] && PATH="${OPENSHIFT_HOMEDIR}/app-root/runtime/bin:${PATH}"
答え2
私の以前の研究室のシステム管理者はこれに素晴らしい機能を提供しました。
pathmunge () {
if ! echo "$PATH" | /bin/grep -Eq "(^|:)$1($|:)" ; then
if [ "$2" = "after" ] ; then
PATH="$PATH:$1"
else
PATH="$1:$PATH"
fi
fi
}
指定された文字列が既に存在することを確認し、PATH
必要に応じて末尾または先頭に追加することもできます。
$ echo $PATH
/usr/local/bin:/usr/bin:/bin
$ pathmunge /sbin/ ## Add to the start; default
$ echo $PATH
/sbin/:/usr/local/bin:/usr/bin:/bin
$ pathmunge /usr/sbin/ after ## Add to the end
$ echo $PATH
/sbin/:/usr/local/bin:/usr/bin:/bin:/usr/sbin/
私のプログラムにこの機能があり、~/.profile
それを使って$PATH
。
答え3
同じ文字列の場合は、次のようにします。
set -a -- "$OPENSHIFT_HOMEDIR/app-root/runtime/bin/"
PATH=$1:${PATH#"$1:"}
set +a --
これは引き続き実行でき、値は$PATH
変更されません。
または確認してみてください。
set -a -- "$OPENSHIFT_HOMEDIR/app-root/runtime/bin/"
case :${PATH:=$1}: in
(*:"$1":*) ;; (*)
PATH=$1:$PATH
esac; set +a --
答え4
GNU sedではこれを行うことができます
echo ${PATH} |
sed "\|${OPENSHIFT_HOMEDIR}/app-root/runtime/bin|\
! s|^|export PATH=${OPENSHIFT_HOMEDIR}/app-root/runtime/bin:|e"