Bash

添加路徑到磷一個_H我_不推薦_______是我_磷一種噸H一世Fn這噸一種lr和一種d是一世nPATH if not already in小路

  • July 22, 2015

我需要在bash腳本中添加路徑,但可能會執行多次:

export PATH=${OPENSHIFT_HOMEDIR}/app-root/runtime/bin/:${PATH}

我不希望一遍又一遍地添加該路徑。如果它還沒有,我該如何添加它$PATH

首先檢查要添加的路徑是否已經是變數的一部分:

[[ ":$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}"

我舊實驗室的系統管理員為此提供了一個漂亮的小功能:

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.

引用自:https://unix.stackexchange.com/questions/217622