$PATHにまだない場合は、$PATHにパスを追加してください。

$PATHにまだない場合は、$PATHにパスを追加してください。

スクリプトにパスを追加する必要があります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"

関連情報