스크립트에 경로를 추가해야 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"