모든 터미널 세션에서 변경 사항을 사용할 수 있도록 PATH를 수정하는 방법


53

검색 경로를 검색 할 디렉토리를 추가하고 싶습니다. PATH환경 변수 를 수정해야한다는 것을 알고 있습니다 . 그러나 변경 사항을 영구적으로 유지하여 열려있는 모든 터미널 (bash) 창에 항상 적용되도록하십시오.

https://help.ubuntu.com/community/EnvironmentVariables 에는 혼란스럽고 상충되는 정보가 많이 있습니다.

우분투 10.04를 사용하고 있습니다. 내가 추가 할 가정 /usr/local/foo내에 PATH. 어떤 파일 ( .bashrc, .profile, .bash_login, 등 ...) 나는 수정해야하고 어떤 새로운 라인 (들)과 같이해야합니까?

답변:


70

다음 명령은 현재 경로에 경로를 추가합니다.

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

설치 프로그램이 매번이 명령을 실행하기를 원하는 경우 여러 곳에 배치 할 수 있습니다. 로그인하면 다음 스크립트가이 순서대로 실행됩니다.

/etc/profile      (which starts by loading everything in /etc/profile.d)
~/.profile        (which starts by loading ~/.bashrc if you are running bash)

노트

  • ~/.profile 경우에만로드 ~/.bash_profile~/.bash_login존재하지 않습니다. 그렇지 않으면 적어도 bash가 대신로드됩니다. .profilebash 특정 스크립트가 아닌 사용하는 것이 좋습니다 . 이러한 시도에 만든 그래서, 만약 .bash_login, 지금 삭제하십시오.

  • ~/.bashrc대화식 세션을 실행중인 경우에만로드됩니다. (실제로 무언가를 입력 할 수있는 프롬프트가있는 것).

  • ~/.bashrc새 터미널을 열 때마다가 반복적으로로드됩니다 . 따라서 gnome-terminal의 새 탭, 새 가상 터미널 등입니다. 따라서 다시 로그인하지 않아도 .bashrc새 쉘을 열 때마다로드되어 환경이 재설정됩니다.

  • byobu와 같은 것들이 실제로 들어가야합니다 .profile(그렇지 않으면 작동하지 않습니다 ;-)

  • 경로와 같은 것들은 .profile대화식 세션 밖에서 작업하기를 원한다면 들어가야 합니다. ( 그놈에서 Alt+ 를 누르면 F2)


.profile에 추가해야하는 요청 된 내보내기 행을 포함하도록 업데이트하면이를 답변으로 표시합니다.
Joshua Flanagan

이것은 콘솔 로그인 (예 : ssh 또는 Ctrl + Alt + Fx에 액세스 할 수있는 가상 터미널)에만 유효합니다. 요즘 / etc / gdm / Xsession 소스 ~ / .profile을 몰랐습니다. 산뜻한!
Marius Gedminas

예, / etc / gdm / Xsession 또는 ~ / .Xprofile에 대해서는 언급하지 않았습니다. 시작시 그래픽 프로그램을 시작하는 더 좋은 방법이 있기 때문에 나머지 환경이 이미로드되어 있다는 것을 보증합니다.
Ralf

1
이 답변을보다 포괄적으로 만들려면 로그 오프 / 켜기주기없이 변경 사항을 활성화하기 위해 ~ / .profile 소싱에 대한 MattH의 의견을 추가하십시오.
matt wilkie

1
@schwiz : ~/.profile각 터미널에서 실행되지 않고 데스크탑 세션이 시작될 때 실행됩니다. 모든 터미널에서 실행되는 것은~/.bashrc
MestreLion

13

수정하여 작동하도록했습니다. ~/.profile

디렉토리가 존재하는 경우 ~ / .profile에 자동으로 수행하는 코드가 있으므로 ~ / bin을 경로에 추가하는 것은 좋지 않은 예입니다.

앞으로 모든 세션에서 usr / local / foo 디렉토리를 내 경로에 추가하려면 .profile 끝에 다음 줄을 추가 / 편집하십시오.

export PATH=$PATH:/usr/local/foo

그러나 이것을 적용하려면 로그 아웃했다가 다시 로그인해야했습니다 (단순히 터미널 창을 닫고 새 창을 열면 작동하지 않습니다).


4
export PATH="$PATH:/usr/foo"공백이나 다른 특수 문자가있는 경우를 대비하여 확인하십시오 $PATH.
Gilles

3
". ~ / .profile"을 입력하여 로그 아웃하지 않고 현재 환경을 다시로드 할 수 있습니다
Matt H

1
@MattH : 아니오 당신은 할 수 없습니다. 만약 당신 ~/.profile이 주어진 터미널 을 소싱한다면 , 그 터미널 에만
MestreLion

@MestreLion-당신이 맞아요. 현재 터미널의 편의를 위해 언급했습니다. 그것을 추가하는 것을 잊었다.
Matt H

PATH에 이미 무언가가 있으면 어떻게합니까? PATHS가 Windows에서 작동하는 것처럼 추가 할 수 있습니까? 예를 들어 PATH="$HOME/bin:$HOME/.local/bin:$PATH"이미 있습니다.
가브리엘 페어

4

.profile을 다시로드하고 로그 아웃 / 로그인하지 않고 변경 사항을 적용하려면 다음을 실행하십시오.

source ~/.profile

이것은 이전 답변에 대한 의견이어야합니다
Pavlo Zhukov

3

에 경로를 추가 할 수 /etc/environment있지만 셸 확장은 작동하지 않습니다. 변수는 문자 그대로 입력 한 문자로 설정됩니다.


두 가지 방법 (.profile에 export 명령 추가 및 etc / environment의 PATH에 전체 경로 이름 추가) 중에서 어느 것이 선호되어야합니까?
Rohan Bhatia

1

디렉토리 에서 .bashrc파일을 수정할 수 있습니다 $HOME.

이 파일의 맨 끝에 다음 줄을 추가하십시오.

export PATH="$HOME/directory_to_include_in_path/:$PATH"

다음 줄을 포함 .profile하여 $HOME디렉토리 에서도 파일 을 수정할 수 있습니다 .

PATH="$HOME/directory_to_include_in_path/:$PATH"

이것은 나를 위해 일했습니다.


2
이것이 더 철저하게 설명하는 다른 답변에 추가되는 것을 보지 못합니다.
Zanna

0

ohmyzsh가있는 경우 터미널을 통해 홈 디렉토리로 이동하여 다음을 입력하십시오.

nano .zshrc

파일의 끝에서

내보내기 PATH = "$ HOME / directory_to_include_in_path / : $ PATH"

마지막으로 터미널을 다시 시작하십시오. 나를 위해 일했다. 이것이 도움이 되었기를 바랍니다.


-3
Going through the basics, I will suggest the following steps:
1. It's recommended to set environment variables in /etc/environment
2. Open the file as superuser in an editor as it's a read only file e.g.     gedit:
gksu gedit /etc/environment
3. System will need password to open it in editable mode. Enter your superuser password and get file opened in a new gedit window. 
4. Add new line at the end of file with 
export PATH=$PATH:/usr/local/foo
5. Save and close the window. It will get command back to terminal.
6. Refresh the environment by running the following command: 
. /etc/environment
7. You may check by executing the following command:
 echo $PATH

이것은 올바르지 않으며 작동하지 않습니다. /etc/environment
Zanna
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.