확인하는 쉘 스크립트를 만들었습니다 . 그렇지 않은 경우 해당 값을 환경 변수 PATH
에 추가합니다 .PATH
쉘 스크립트 내의 작업 에 따라 echo $PATH
성공적으로 추가되었습니다. 하지만 명령줄에서 실행하려고 하면 echo $PATH
변경 사항이 반영되지 않습니다.
이것은 내 코드입니다.
#!/bin/bash
postgresPath="/opt/PostgreSQL/9.2/bin"
echo "Checking PATH env.."
[[ ":$PATH:" != *"$postgresPath"* ]] && export PATH="${PATH}:$postgresPath"
echo $PATH
답변1
스크립트는 자체 환경에서 실행됩니다. 이는 스크립트가 실행되는 상위 셸의 환경에 영향을 주지 않습니다. 즉, $PATH
스크립트의 변경 사항은 $PATH
대화형 셸에서 변경되지 않습니다.
작은 예:
$ echo "$PATH"
/usr/bin:/bin:/usr/sbin:/sbin:/usr/X11R6/bin:/usr/local/bin
$ ( PATH="hello"; echo "$PATH" )
hello
$ echo "$PATH"
/usr/bin:/bin:/usr/sbin:/sbin:/usr/X11R6/bin:/usr/local/bin
export
PATH
( 이미 내보낸 변수이므로 하위 쉘에서 변수를 다시 사용해도 상관없습니다 .)
.
source
현재 쉘과 동일한 환경에서 명령을 실행하는 스크립트를 사용하거나 가져오거나 스크립트를 쉘 함수로 변환하는 것이 좋습니다 .
답변2
이 문제를 해결하기 위해 이것을 내
~/.bash_aliases
아래 줄은 테스트되었으며 예상대로 작동합니다.
function ep () { [ -n "$1" ] && DIR=$(readlink -fq $1) || DIR=$PWD; echo -e "exporting PATH (\e[33m$DIR\e[m)"; PATH=$DIR:$PATH; }
용법:
bashSHELL$ ep
or
bashSHELL$ ep /path/to/dir
or
bashSHELL$ ep ../path/to/dir
etc.