[linux] Linux / Unix에서 $ PATH를 영구적으로 설정하는 방법은 무엇입니까?

경로에 디렉토리를 추가하려고하므로 항상 Linux 경로에 있습니다. 난 노력 했어:

export PATH=$PATH:/path/to/dir

이것은 작동하지만 터미널을 종료하고 새 터미널 인스턴스를 시작할 때 마다이 경로가 손실되므로 내보내기 명령을 다시 실행해야합니다.

영구적으로 설정되도록하려면 어떻게해야합니까?



답변

여러 가지 방법이 있습니다. 실제 솔루션은 목적에 따라 다릅니다.

변수 값은 일반적으로 시스템 또는 사용자 세션 시작시 실행되는 지정 목록 또는 쉘 스크립트에 저장됩니다. 쉘 스크립트의 경우 특정 쉘 구문 및 export/ 또는 set명령을 사용해야 합니다.

시스템 전체

  1. /etc/environment고유 할당 목록은 참조를 허용합니다. 같은 시스템 전체 디렉토리를 추가하는 것에 대 한 완벽 /usr/local/something/binPATH변수 또는 정의 JAVA_HOME. PAM 및 SystemD에서 사용합니다.
  2. /etc/environment.d/*.conf고유 할당 목록은 참조를 허용합니다. 같은 시스템 전체 디렉토리를 추가하는 것에 대 한 완벽 /usr/local/something/binPATH변수 또는 정의 JAVA_HOME. 구성은 일반적으로 각 도구 (Java, Go, NodeJS) 당 하나씩 여러 파일로 분할 될 수 있습니다. 의도적으로 해당 값을 사용자 로그인 쉘에 전달하지 않는 SystemD에서 사용합니다.
  3. /etc/xprofileX Window System 세션을 시작하는 동안 셸 스크립트가 실행되었습니다. 이것은 X Window System에 로그인하는 모든 사용자에 대해 실행됩니다. 그것은을위한 좋은 선택입니다 PATH같은 모든 사용자에 대해 유효한 항목 /usr/local/something/bin. 파일은 다른 스크립트에 포함되므로 사용자 쉘의 구문이 아닌 POSIX 쉘 구문을 사용하십시오.
  4. /etc/profile/etc/profile.d/*쉘 스크립트. 쉘 전용 시스템에 적합합니다. 해당 파일은 로그인 모드의 쉘에서만 읽습니다.
  5. /etc/<shell>.<shell>rc. 쉘 스크립트. 단일 쉘 전용이기 때문에 이것은 좋지 않은 선택입니다. 비 로그인 모드에서 사용됩니다.

사용자 세션

  1. ~/.pam_environment. 고유 한 과제 목록, 참조는 허용되지 않습니다. 모든 사용자 세션이 시작될 때 PAM에 의해로드됩니다 (X Window System 세션 또는 쉘인 경우). 당신은 다른 변수를 포함하여 참조 할 수 없습니다 HOME또는 PATH이 제한된 사용을 갖도록. PAM에서 사용합니다.
  2. ~/.xprofile쉘 스크립트. 이것은 사용자가 X Window System 시스템에 로그인 할 때 실행됩니다. 여기에 정의 된 변수는 모든 X 응용 프로그램에서 볼 수 있습니다. 사용자 별 또는 PATH과 같은 값으로 정의 ~/bin하거나 를 확장하기위한 완벽한 선택입니다 . 파일은 다른 스크립트에 포함되므로 사용자 쉘의 구문이 아닌 POSIX 쉘 구문을 사용하십시오. 바로 가기로 시작된 그래픽 텍스트 편집기 또는 IDE에 해당 값이 표시됩니다.~/go/binGOPATHNPM_HOME
  3. ~/.profile, ~/.<shell>_profile, ~/.<shell>_login쉘 스크립트. 터미널 또는 터미널 에뮬레이터에서 시작된 프로그램에만 표시됩니다. 쉘 전용 시스템에 적합합니다. 로그인 모드에서 쉘에 의해 사용됩니다.
  4. ~/.<shell>rc. 쉘 스크립트. 단일 쉘 전용이기 때문에 이것은 좋지 않은 선택입니다. 비 로그인 모드의 쉘에서 사용합니다.

노트

Wayland의 Gnome은 환경을 얻기 위해 사용자 로그인 쉘을 시작합니다. 그것은 효과적으로 로그인 쉘 구성을 사용 ~/.profile, ~/.<shell>_profile, ~/.<shell>_login파일을.

매뉴얼

  • 환경
  • environment.d
  • 세게 때리다
  • 대시

배포 관련 문서

관련

로그인 셸과 비 로그인 셸의 차이점은 무엇입니까?


답변

파일 ~/.profile이나 ~/.bashrc파일 에 추가해야 합니다. 

export PATH="$PATH:/path/to/dir"

당신이하고있는 것에 따라 바이너리에 심볼릭 링크를 원할 수도 있습니다.

cd /usr/bin
sudo ln -s /path/to/binary binary-name

이렇게하면 나머지 세션 동안 경로가 자동으로 업데이트되지는 않습니다. 이렇게하려면 다음을 실행해야합니다.

source ~/.profile
or
source ~/.bashrc


답변

우분투에서 편집하십시오 /etc/environment. 유일한 목적은 환경 변수를 저장하는 것입니다. 원래 $ PATH 변수가 여기에 정의되어 있습니다. 이것은 내 /etc/environment파일 에서 붙여 넣습니다 .

PATH="/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games"

따라서이 파일을 루트로 열고 원하는 것을 추가 할 수 있습니다.

즉각적인 결과의 경우 실행 (정상 사용자 루트 로 시도 ) :

source /etc/environment && export PATH

최신 정보:

zsh(일명 Z Shell) 을 사용하는 경우 /etc/zsh/zshenv: 에서 주석 바로 뒤에이 줄을 추가하십시오 .

source /etc/environment

우분투 15.10 에서이 작은 문제가 발생했지만 zsh 가 올바른 PATH를 얻지 못하면 이것이 이유 일 수 있습니다


답변

export선언을 넣 습니다 ~/.bashrc. 내 .bashrc에는 다음이 포함됩니다.

export PATH=/var/lib/gems/1.8/bin:/home/fraxtil/.bin:$PATH


답변

$PATH두 가지 방법으로 영구적으로 설정할 수 있습니다 .

  1. 특정 사용자의 경로를 설정하려면 다음을 입력해야합니다. .bash_profile 홈 디렉토리에 .

    예를 들어 내 경우에는 Tomcat 사용자 프로필에 Java 경로를 설정합니다.

    [tomcat]$ echo "export PATH=$PATH:/path/to/dir" >> /home/tomcat/.bash_profile
  2. 모든 시스템 사용자의 공통 경로를 설정하려면 다음과 같이 경로를 설정해야합니다.

    [root~]# echo "export PATH=$PATH:/path/to/dir" >> /etc/profile

답변

로컬 사용자를 위해 Centos 또는 RHEL에서 사용할 수 있습니다.

echo $"export PATH=\$PATH:$(pwd)" >> ~/.bash_profile

이렇게하면 현재 디렉토리 (또는 다른 디렉토리를 사용할 수 있음)가 PATH에 추가됩니다. 이렇게하면 영구적이지만 다음 사용자 로그온시 적용됩니다.

다시 로그온하지 않으려면 다음을 사용할 수 있습니다.

source ~/.bash_profile

# User specific environment and startup programs이 의견을 다시로드하면.bash_profile


답변

다음 파일 중 하나를 편집하여 영구적으로 설정할 수도 있습니다.

/etc/profile (모든 사용자)

~/.bash_profile (현재 사용자)

~/.bash_login (현재 사용자)

~/.profile (현재 사용자)

/etc/environment영구 PATH 환경 변수를 설정하는 데 사용할 수도 있지만 변수 확장은 지원하지 않습니다 .

http://www.sysadmit.com/2016/06/linux-anadir-ruta-al-path.html 에서 추출