/etc/environment에서 변수를 설정하면 효과가 없지만 명령줄에서 설정하면 [중복]됩니다.

/etc/environment에서 변수를 설정하면 효과가 없지만 명령줄에서 설정하면 [중복]됩니다.

명령이 제대로 작동하도록 특정 환경 변수를 설정하고 있습니다 pyspark. 변수를 설정 /etc/environment하고 가져오면 작동하지 않습니다. 그러나 명령줄에서 설정하면 작동하지만 물론 이 세션에서만 작동합니다. 내 의도는 세션을 다시 열어도 들어갈 수 있도록 전역으로 설정하는 것입니다.pyspark

/etc/environment에 설정

[root@localhost ~]# more /etc/environment
[root@localhost ~]# echo "export SPARK_HOME=/srv/spark" >> /etc/environment
[root@localhost ~]# echo "export PATH="$SPARK_HOME"/bin:"$PATH >> /etc/environment
[root@localhost ~]# echo "export JAVA_HOME=/usr/lib/jvm/jre-1.7.0-openjdk" >> /etc/environment
[root@localhost ~]# source /etc/environment
[root@localhost ~]# pyspark --version
-bash: pyspark: command not found

명령줄에서 설정

[root@localhost ~]# export SPARK_HOME=/srv/spark
[root@localhost ~]# export PATH=$SPARK_HOME/bin:$PATH
[root@localhost ~]# export JAVA_HOME=/usr/lib/jvm/jre-1.7.0-openjdk
[root@localhost ~]# pyspark --version
Welcome to
      ____              __
     / __/__  ___ _____/ /__
    _\ \/ _ \/ _ `/ __/  '_/
   /___/ .__/\_,_/_/ /_/\_\   version 1.6.1
      /_/

Type --help for more information.

답변1

export SPARK_HOME=...다른 명령을 쉘의 시작 파일에 넣으십시오 . bash의 경우 이는 ~/.profile또는 입니다 ~/.bash_profile.


Linux에서는 /etc/environment일반적으로 로그인 시 읽혀지며 pam_env.so기존 변수 확장은 지원되지 않으므로 설정하면 다음과 같은 PATH=$PATH:/something결과가 발생합니다.단어문자열 $PATH이 에 나타납니다 PATH. 이것은 당신이 원하는 것이 아닙니다. (예를 들어이것그리고이것, 또한 재미로이것.)

또한 셸의 전역 시작 스크립트가 해당 설정을 재정의할 수 있으므로 설정이 작동하지 않을 PATH수 있습니다 . /etc/environment(Debian에서는 기본적으로 실행되며, 제가 가지고 있는 이전 CentOS에서는 시작 스크립트가 맨 앞에만 있는 것 같습니다 PATH.)

시스템에서 이를 사용하지 pam_env.so않고 스크립트를 수동으로만 얻는 경우에는 물론 이러한 고려 사항은 중요하지 않습니다. 하지만 적어도 몇몇 Linux 배포판에서 널리 사용되는 것으로 보이므로 다른 파일 이름을 사용하는 것이 좋을 수도 있습니다.


(이것은 다른 답변과 정확히 반대이기 때문에 이전 CentOS에서 테스트했습니다.)

다음 내용을 넣었습니다 /etc/environment.

export FOO1=bar
export FOO2=foo:$FOO

다시 로그인하면 set | grep FOO다음이 표시됩니다.

FOO1=bar
FOO2='foo:$FOO'

답변2

이 코드 줄은 여러분이 생각하는 것과는 다릅니다.

echo "export PATH="$SPARK_HOME"/bin:"$PATH >> /etc/environment

문제는 $SPARK_HOME평가 중에 발생합니다 echo(있는 그대로 $PATH; 원하지 않을 수도 있음).현재의이 파일의 경로).

cat /etc/environment이 줄이 제대로 보이지 않는다는 것을 알게 된다면 .

대신에

echo 'export PATH="$SPARK_HOME/bin:$PATH"' >> /etc/environment

그러면 파일을 생성할 때 $SPARK_HOME및 값이 사용됩니다.$PATHsource

관련 정보