echo $PATH는 쉘 스크립트에서 수행한 "내보내기 경로"를 반영하지 않습니다.

echo $PATH는 쉘 스크립트에서 수행한 "내보내기 경로"를 반영하지 않습니다.

확인하는 쉘 스크립트를 만들었습니다 . 그렇지 않은 경우 해당 값을 환경 변수 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

http://rextester.com/RBLTT17164

답변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

exportPATH( 이미 내보낸 변수이므로 하위 쉘에서 변수를 다시 사용해도 상관없습니다 .)

.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.

관련 정보