Jér*_*nge 35 scripting bash path shell-script
我需要在bash
脚本中添加一个路径,但它可能会被执行多次:
export PATH=${OPENSHIFT_HOMEDIR}/app-root/runtime/bin/:${PATH}
Run Code Online (Sandbox Code Playgroud)
我不想一遍又一遍地添加该路径。如果还没有,我如何添加它$PATH
?
cha*_*aos 57
首先检查要添加的路径是否已经是变量的一部分:
[[ ":$PATH:" != *":/path/to/add:"* ]] && PATH="/path/to/add:${PATH}"
Run Code Online (Sandbox Code Playgroud)
如果/path/to/add
已经在 中$PATH
,则什么都不会发生,否则它会被添加到开头。
如果您最终需要它,请改用它PATH=${PATH}:/path/to/add
。
编辑:在你的情况下,它看起来像这样:
[[ ":$PATH:" != *":${OPENSHIFT_HOMEDIR}/app-root/runtime/bin:"* ]] && PATH="${OPENSHIFT_HOMEDIR}/app-root/runtime/bin:${PATH}"
Run Code Online (Sandbox Code Playgroud)
ter*_*don 24
我旧实验室中的系统管理员有一个漂亮的小功能:
pathmunge () {
if ! echo "$PATH" | /bin/grep -Eq "(^|:)$1($|:)" ; then
if [ "$2" = "after" ] ; then
PATH="$PATH:$1"
else
PATH="$1:$PATH"
fi
fi
}
Run Code Online (Sandbox Code Playgroud)
它将检查给定的字符串是否已经在 中,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/
Run Code Online (Sandbox Code Playgroud)
我有这个功能~/.profile
并用它来修改我的$PATH
.