PATH에 디렉토리를 추가하는 방법?


730

$PATH우분투에서 디렉토리를 추가 하고 변경 사항을 영구적으로 만들려면 어떻게합니까?


2
help.ubuntu.com/community/EnvironmentVariables 알아야 할 모든 것이 있습니다. 여기에 많은 입력이 잘못되었거나 적어도 방법이 제안되지 않았다는 것을 알았습니다. 이것은 당신이 그것을하고있는 이유와 모든 것을 망치지 않고 정확히 어떻게 해야하는지에 따라 환경 변수를 수정할 위치를 알아낼 수있는 훌륭한 정보입니다 (위의 나쁜 조언 중 일부를 따랐던 것처럼). 너무 오랫동안, 그리고 모든 물고기에게 감사합니다!
버스 42

답변:


456

~ / .profile을 사용하여 $ PATH 설정

설정된 경로 .bash_profile는 bash 로그인 쉘 ( bash -l) 에만 설정됩니다 . 경로를 입력 .profile하면 전체 데스크탑 세션에서 사용할 수 있습니다. 그것은 심지어 메타 시티가 그것을 사용할 것이라는 것을 의미합니다.

예를 들면 ~/.profile다음과 같습니다.

if [ -d "$HOME/bin" ] ; then
  PATH="$PATH:$HOME/bin"
fi

Btw에서는 환경을 살펴봄으로써 프로세스의 PATH 변수를 확인할 수 있습니다 /proc/[pid]/environ([pid]를의 숫자로 대체하십시오 ps axf). 예를 들어grep -z "^PATH" /proc/[pid]/environ

노트 :

bash로그인 쉘은 또는 존재하는 .profile경우 구문 분석하지 않습니다 . 보낸 사람 :.bash_profile.bash_loginman bash

~ / .bash_profile, ~ / .bash_login 및 ~ / .profile을 순서대로 찾고 존재하고 읽을 수있는 첫 번째 명령을 읽고 실행합니다.

에 대한 정보 또는 대화 형 비 로그인 셸 에 대한 자세한 내용은 아래 답변을 참조 하거나 디스플레이 관리자 세션에 스크립트를 넣거나 사용 하여 모든 사용자에 대한 값을 전체적으로 설정하십시오 ..pam_environment.bashrc/etc/profile.d//etc/X11/Xsession.d/


5
멋지다. bin 디렉토리를 자동으로 추가하는 위치를 보았습니다. 스크립트 대신 방금 사용했습니다. TY.
justingrif

5
Xbunutu에서 .profile이 실행되지 않으므로 .bashrc에 넣고 작동합니다.
tekumara

13
문서는 환경 변수에 대한 공식 문서 입니다. 읽어보십시오 (환경 변수에 값을 추가하기 위해 규칙의 마지막 버전으로 업데이트되었다는 것은 말할 것도 없습니다).
Michele

3
.profile의 어디에 경로를 추가합니까 ??
Vineet Kaushik

3
추가 경로 부분을 어디에 추가해야하는지 여전히 알 수 없습니다. 내 경로에 안드로이드 SDK를 추가해야합니다 ... PATH="$HOME/bin:$PATH"그래서 추가합니까?
Jamie Hutber

302

.bashrc홈 디렉토리에서 편집 하고 다음 행을 추가하십시오.

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

.bashrc변경 사항을 적용 하려면 소스 또는 로그 아웃 / 로그인 (또는 터미널을 다시 시작)해야합니다. 를 .bashrc입력 하려면 간단히

$ source ~/.bashrc

3
"소스를 어떻게 .bashrc"제공합니까? "터미널을 다시 시작"하는 방법은 무엇입니까?
isomorphismes

3
bash에서는 단순히 '입니다. .bashrc '
Ophidian

1
나는 당신이 당신의 홈 디렉토리에 있다고 가정하고있었습니다. 그것이 편집하려는 .bashrc가있는 곳이기 때문입니다.
Ophidian

21
.bashrc환경 변수를 설정하기에 적합한 장소가 아닙니다. 그들은 .profile또는 안으로 들어가야 .pam_environment합니다.
geirha

4
@LaoTzu . .bashrc하지 .bashrc:) 또는 source .bashrc그 문제에 대해
Znarkus

120

모든 사용자에게 적용되는 영구적 인 시스템 전체 환경 변수 를 정의하기 위해 권장되는 위치 는 다음과 같습니다.

/etc/environment

(디폴트 PATH가 정의 되어있는 곳 )

이것은 데스크탑 또는 콘솔, 그놈 터미널 또는 TTY, 비 또는 빛에서 작동합니다.)

  • 편집하려면 Alt+를 누르고 다음 F2을 입력하십시오.

    gksudo gedit /etc/environment
    

    (또는 sudo좋아하는 텍스트 편집기에서 파일을 사용하여 엽니 다 )

변경 사항을 적용하려면을 실행하십시오 . /etc/environment. 이 파일은 단순한 스크립트이므로 PATH환경 변수에 새 경로를 실행하고 할당합니다 . env 실행을 확인 PATH하고 목록 의 값 을 확인 하십시오.

관련 :


6
변경 사항을 적용하려면 재부팅해야합니다 ...
Lee

2
이것이 바로 내가 필요한 것입니다. 유랑을 통해 스로 어웨이 VM 이미지를 프로비저닝하고 경로에 노드와 npm을 추가해야했습니다.
Austin Pray

7
변경 사항을 적용하려면 run을 실행하십시오. / etc / environement (예, 점, 공백 및 / etc / environment) 이 파일은 단순한 스크립트이므로 PATH 환경 변수에 새 경로를 실행하고 할당합니다. env 실행을 확인하고 목록에서 PATH 값을 확인하십시오.
WindRider

1
source /etc/environment변경 사항을 다시로드 하기 위해 실행해야했습니다.
JohnnyAW

@JohnnyAW : source는 초기 점과 같습니다 (예 : en.wikipedia.org/wiki/Source_(command) 참조 ) .
롤랜드 사라진

58

우분투의 정식 방법은 다음과 같습니다.

  • 아래에 새 파일을 작성하십시오 /etc/profile.d/

    sudo vi /etc/profile.d/SCRIPT_NAME.sh
    
  • 거기에 추가하십시오 :

    export PATH="YOUR_PATH_WITHOUT_TRAILING_SLASH:$PATH"
    
  • 실행 권한을 부여

    sudo chmod a+x /etc/profile.d/SCRIPT_NAME.sh
    

20
일반적으로 시작 경로 대신 PATH 끝에 사용자 정의 경로를 추가하는 것이 더 안전합니다. 이렇게하면 실수로 시스템 명령을 프로그램 (또는 다른 사람의 악성 프로그램)으로 바꾸지 않아도됩니다. 또한 다른 사람이 시스템에서 작업하거나 조언을 제공 할 때 혼동을 피하고 "대체"한 명령에서 예기치 않은 결과를 얻습니다.
Joe

47

GUI에 더 익숙한 완전한 초보자 (예 : 나) :

  1. 열려있는 $HOME폴더에 있습니다.
  2. 보기숨김 파일 표시로 이동 하거나 Ctrl+를 누릅니다 H.
  3. 마우스 오른쪽 버튼을 클릭 .profile하고 텍스트 편집기로 열기를 클릭하십시오 .
  4. 하단으로 스크롤하여을 추가하십시오 PATH="$PATH:/my/path/foo".
  5. 저장하기.
  6. 로그 아웃했다가 다시 로그인하여 변경 사항을 적용하십시오 (Ubuntu가 실제로로드하도록하십시오 .profile).

4
: .profile 파일을 편집 anymore.You 여전히 볼 .pam_environment 파일을 편집하려면이 방법을 사용할 수 있습니다하지 않는 것이 좋습니다 help.ubuntu.com/community/EnvironmentVariables
PulsarBlow

@PulsarBlow에게 감사합니다! 정확히 차이점과 이점이 무엇인지 잘 모르겠습니다. 이것은 관련 섹션에 대한 직접 URL입니다 : help.ubuntu.com/community/…
dain

1
이 답변으로 인해 모든 경로가 재정의되어 시스템이 로그인을 중지했습니다. 우분투 사용하기 16.04.
Frisbetarian

1
@Frisbetarian $PATH:기존 PATH 정의를 포함하는 비트 를 추가해야합니다
dain

@dain : 당신의 의견은 내 생명을 구했습니다!
Py-ser

46

특정 사용자 만 사용할 수있는 지속적 환경 변수의 경우. 우분투 공식 문서를 강력히 추천합니다.

https://help.ubuntu.com/community/EnvironmentVariables

위의 문서를 참조하여 Android SDK 경로 도구 를 다음과 같이 설정 했습니다.

  1. ~/.pam_environment홈 디렉토리에 파일을 작성 합니다.
  2. 의 내용은입니다 PATH DEFAULT=${PATH}:~/android-sdk-linux/tools.
  3. 콜론 (:)으로 경로를 분리하여 추가 사용자 정의 사용자 경로를 추가 할 수 있습니다 .
  4. 다시 로그인 해야하므로 데스크톱 환경에서 로그 아웃했다 가 다시 로그인 해야합니다.

1
이것이 가장 좋은 대답입니다.
Paulo Coghi

26

그 줄을 ~/.bashrc파일 에 넣으십시오 .

터미널을 열 때마다 공급됩니다.

편집 : (당신이 명중 할 때를 포함하여 모든 쉘에 적용하는 일반적인 설정은 아래의 의견을 바탕으로 Alt- F2유니티에서), 당신에 줄을 추가 ~/.profile파일. 그러나 PATH터미널을 열면 경로가 환경 에 두 번 추가되므로 두 가지를 모두 수행해서는 안됩니다 .


1
실제로 $HOME/.profile개인 설정 또는 /etc/profile모든 사용자에 대한 경로를 설정했다고 생각했습니다 . 그러나 bash에만 필요한 경우 둘 중 하나가 작동한다고 가정합니다.
Marty Fried

1
로 설정 ~/.bashrc하면 열려있는 터미널에서만 사용할 수 있습니다. 예를 들어 Alt + F2를 누르고 해당 디렉토리에서 명령을 실행하려고하면 찾을 수 없습니다. ~/.profile또는로 설정 ~/.pam_environment하면 그놈 세션 (또는 사용하는 DE)이 세션을 상속합니다. PATH를 추가 ~/.bashrc하면 다른 대화식 bash 셸에서 대화식으로 bash를 열고 실행하면 여러 번 추가되는 단점이 있습니다.
geirha

2
나는 이것을 잠시 동안 살펴 보지 않았으므로 검색을 수행했으며 경로를 설정하는 적어도 95 가지 다른 방법이있는 것으로 보입니다. 대부분은 여기에서 논의 됩니다 . 나는 어느 것이 가장 좋은 지 알지 못했습니다. ~/.profile개인의 길에는 맞다고 생각 합니다. 우분투가 ~/bin디렉토리를 추가하는 곳 입니다. 그리고 나는 여러 가지 방법을 약간 과장했다고 고백합니다.
마티 프라이드

1
@MartyFried는 프리 노드에서 #bash의 봇을 인용합니다.«인터넷의 압도적 인 대다수의 bash 스크립트, 코드, 자습서 및 가이드는 허풍입니다. 철갑 상어는 낙관론자였습니다.»bash 문제로 Google을 사용하면 좋은 솔루션을 찾기 전에 많은 반 작업 솔루션을 찾을 수 있습니다. 아, 나는 ~/.profile이 경우에도 함께 갈 것입니다 .
geirha

1
@geirha-나는 인터넷상의 대부분의 가이드가 아마도 쓰레기, 특히 다른 배포판이나 같은 버전의 다른 버전이 다르게 작동하기 때문에 Linux 일 것입니다. 그것은 일반적으로 작동하는 것으로 요약되지만 대부분의 사람들은 작동하는 것이 단순히 작동하는 것, 반드시 옳은 것이거나 항상 작동하는 것이 아니라는 것을 인식하지 못합니다. 여러 가지 방법 중 실제로 올바른 방법을 찾으려고 노력합니다. 여러 번하는 일이 싫기 때문에 항상 쉬운 것은 아닙니다. :)
Marty Fried

15

시스템 전체를 설정하려면 export PATH=/path/you're/adding:$PATH끝에 줄 을 추가하십시오 /etc/profile.

로그인 한 사용자에 대해서만 디렉토리를 추가하려면에 같은 행을 추가하십시오 ~/.bash_profile.


14

.bashrc에 추가하면 작동하지만 경로 변수를 설정하는보다 전통적인 방법은 다음 줄을 추가하여 .bash_profile에 있다고 생각합니다.

PATH=$PATH:/my/path/foo
export PATH

이 스레드 에 따르면 Ubuntu의 동작이 RedHat 및 클론과 약간 다른 것처럼 보입니다.


1
.bash_profile이 없습니다. 만들어야합니까?
justingrif

7
당신이 있다면 대신에 .bashrc스틱 .bashrc. 우분투의 GUI 터미널은 로그인 쉘 .bash_profile이 아니므로 실행되지 않습니다.

1
GUI 쉘을 실행하지 않습니다. 그러나 위의 스레드에서 .bashrc가 정상적으로 작동하는 것처럼 보입니다.
justingrif

2
쉘이 로그인 쉘인 경우 둘 다 작동합니다. 그러나 방금 우분투 컴퓨터 중 하나에서 .bash_profile 접근 방식을 시도했지만 그놈 세션을 다시 시작한 후에도 .bash_profile을 소스하지 않았습니다. 그래서 이것을 .bashrc에 넣는 것이 아마도 우분투와 함께하는 방법이라고 말할 것입니다.
3dinfluence

3
@justingrif 아니요, 필요 없습니다 .bash_profile. bash가 .bash_profile(대화식으로 로그인 할 때)를 찾지 못하면 .profile대신 찾아서 사용합니다. 기본적으로 .profile.bashrc우분투가 있습니다. 그리고 .profile우리가 대해 pam_env을 무시하면 환경 변수를 설정하는 올바른 장소입니다.
geirha


8
sudo vi /etc/profile.d/SCRIPT_NAME.sh

거기에 추가

export PATH=YOUR_PATH_WITHOUT_TRAILING_SLASH:$PATH

2
sudo nano /etc/profile.d/SCRIPT_NAME.sh초보자에게는 더 쉽습니다.
동 형사상

1
초보자 gksu gedit /etc/profile.d/SCRIPT_NAME.sh에게는 훨씬 쉽습니다.
fouric

6

BASH 스크립트 폴더를 "설치"할 때마다 $HOME/bin최신 우분투 버전에서 대부분의 .profile 파일에 있는 폴더 에 대한 테스트 패턴을 따릅니다 . 다음과 같은 테스트를 설정했습니다

if [ -d "/usr/scripts" ]; then
   PATH="/usr/scripts:$PATH"
fi

시간의 100 % 정도만 작동하며 GUI 텍스트 편집기 /scripts에서 내 $HOME폴더에 가까운 곳 으로 이동하기로 결정한 경우 빠른 "바꾸기"를 사용하여 GUI 텍스트 편집기에서 자유롭게 변경할 수 있습니다. 우분투 설치 6 건에서는 그렇게하지 않았지만 "항상 내일"있습니다. 에스

BZT


6

당신의 편집하기 위해 권장되는 방법은 PATH출신 /etc/environment파일

의 출력 예 /etc/environment:

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

예를 들어, 새 경로를 추가하려면 /home/username/mydir

PATH="/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games:/home/username/mydir"

그런 다음 PC를 재부팅하십시오.


시스템 전체 환경 변수

특정 사용자가 아닌 시스템 전체에 영향을 미치는 환경 변수 설정에 적합한 파일은 / etc / environment입니다. 대안은 /etc/profile.d 디렉토리에 목적에 맞는 파일을 작성하는 것입니다.

/ etc / 환경

이 파일은 특히 시스템 전체 환경 변수 설정을위한 것입니다. 스크립트 파일은 아니지만 한 줄에 하나씩 할당 표현식으로 구성됩니다.

참고 : / etc / environment에서는 변수 확장이 작동하지 않습니다.

자세한 정보는 여기에서 찾을 수 있습니다 : EnvironmentVariables


1
가장 낮은 답변이지만 가장 정확합니다. 이 파일은 일반적으로 경로와 함께 자동으로 채워진 bin Ubuntu입니다.
NotoriousPyro

4

터미널을 열고 gedit .profile다음을 입력 하고 삽입하십시오.

# set PATH so it includes user's private bin if it exists
if [ -d "$HOME/bin" ] ; then
    PATH="$PATH:$HOME/bin"
fi

 #the following line add Bin where you dont have a Bin folder on your $HOME
    PATH="$PATH:/home/mongo/Documents/mongodb-linux-i686-2.2.2/bin"

터미널을 닫고 열면 작동해야합니다.


2

에 넣어 당신 ~/.bashrc또는 당신이 RC를 사용 whatevershell (또는 그리고 앞서 위해 ~/.profile) 및 ~/.xsessionrc그래서 그것은 또한 X (외부 쉘)에서 작동합니다.


1

시스템 스크립트가 이것을 사용하지 않더라도 $HOME/binPATH 환경 변수에 경로 (예 :)를 추가하려는 경우에는

PATH="${PATH:+${PATH}:}$HOME/bin"

추가하는 대신 ( PATH="$PATH:$HOME/bin")

PATH="$HOME/bin${PATH:+:${PATH}}"

앞에 (를 대신하여 PATH="$HOME/bin:$PATH") 추가 합니다.

이렇게하면 $PATH처음에 비어 있을 때 가짜 선행 / 트레일 링 콜론을 피할 수 있으며 이로 인해 원하지 않는 효과가 발생할 수 있습니다.

예를 들어 https://unix.stackexchange.com/questions/162891/append-to-path-like-variable-without-creating-leading-colon-if-unset


-1

우분투의 ~/.bashrc경우 다음 줄을 편집 하고 추가하십시오.

. ~/.bash_profile

그런 다음 필요에 따라 .bash_profile을 편집하십시오 .....


1
" .bash_profile필요에 따라 편집"하는 방법을 설명하지 않았기 때문에 하향 조정되었습니다 . 정확히 무엇을해야 .bash_profile합니까?
동 형사상

4
이것은 잘못된 길입니다. .profile또는 .bash_profile소스해야합니다 .bashrc. 다른 방법은 아닙니다.
geirha
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.