/etc/environment에서 변수 확장이 발생하지 않습니다.

/etc/environment에서 변수 확장이 발생하지 않습니다.

/etc/environment변수에 더 많은 디렉토리를 추가하도록 변경했습니다 PATH. 하지만 큰따옴표로 묶인 내용은 확장되지 않은 것처럼 보이고 $PATH쉘에서 어떤 명령이라도 찾아 /usr/bin/command-not-found실행할 수 있습니다.

$ cat /etc/environment 
PATH="/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games"
PATH="$PATH:/home/user/technical/java/maven/bin"
JAVA_HOME="/home/user/technical/java/jdk7"

그래서 tty에서,

$ echo $PATH
$PATH:/home/user/technical/java/maven/bin

왜 확장이 이루어지지 않았나요?

답변1

/etc/environment는 쉘과 아무 관련이 없습니다. 이는 bash와 같은 어떤 수단에도 의존하지 않는다는 것을 의미합니다.확장.

key=value여기서는 간단한 할당 만 사용할 수 있습니다 .

답변2

/etc/environment파일의 출처는Linux-PAM 프로젝트그리고 이것은 쉘 스크립트가 아닙니다. 쉘이나 PAM 모두 이 파일에 대해 변수 확장을 수행하지 않으므로 변수 값은 파일에 기록될 때 할당됩니다.

/etc/environment서류녹음됨프로젝트별:

/etc/environment파일은 설정할 환경 변수를 지정합니다. 파일은 NAME=VALUE별도의 줄에 있는 단순 쌍으로 구성되어야 합니다. 모듈은 pam_env(8)파일 다음에 파일을 읽습니다 pam_env.conf.

/etc/security/pam_env.conf파일은 쉘 스크립트도 아니지만하다다른 변수를 참조하기 위한 구문을 지원합니다 ${variable}. 또한 두 가지 특수 표현식을 지원하며 @{HOME}이를 사용자 항목에서 읽은 적절한 값으로 대체 @{SHELL}합니다 .passwd

이 파일에서 변수를 정의하는 구문은 셸 스크립트의 구문과 다릅니다.

VARIABLE [DEFAULT=[value]] [OVERRIDE=[value]]

자세한 내용은 위에 링크된 문서를 참조하세요.

관련 정보