bash로 환경 변수를 설정하는 데 어떤 설정 파일을 사용해야합니까?


9

herehere 에서 요청하고 답변을 얻었을 때 PATH 변수에는 앱 활성화 방법에 따라 다른 경로 이름이 있습니다.

  • bash로 소프트웨어를 시작하는 방법에 관계없이 동일한 PATH 변수를 사용하려면 어떤 설정 파일 (.bashrc, .profile, ...)을 사용해야합니까?

답변:


15

전통적으로 유닉스 시스템에서 사용자 별 환경 변수를 정의 할 수있는 곳은 ~/.profile입니다. 로그인 쉘이 Bourne 호환 쉘인 경우,이 파일은 로그인 쉘 (즉, 로그인 할 때 시작되고 명령을 입력 할 수있는 프로그램)이 읽습니다.

Bash는 Bourne 호환 쉘입니다. ~/.bash_profile이 파일이 존재하고 존재하지 않는 ~/.profile경우 , 로그인 쉘이 호출 될 때 읽습니다 ~/.bash_profile.

일반적으로 텍스트 모드 (예 : 텍스트 콘솔 또는 ssh를 사용하여 원격으로)로 암호를 입력하면 셸이 로그인 셸입니다.

그러나 그래픽 프로그램에 비밀번호를 입력하고 그래픽 환경에 로그인하면 일반 로그인 쉘이 무시됩니다. .profile이 경우 읽기 여부 는 그래픽 세션 설정 방법에 따라 다릅니다. 예를 들어, Linux 배포판, 디스플레이 관리자 및 데스크탑 환경에 따라 다릅니다. 때때로 체인의 프로그램 중 하나가 로그인 쉘을 명시 적으로 호출합니다. 때로는 프로그램 중 하나가 명시 적으로 읽습니다 ~/.profile. 때로는이 중 어느 것도 ~/.profile일어나지 않고 읽히지 않습니다.

Ubuntu 10.04에서 관련 스크립트를 한 눈에 알 수있는 한 가변성의 예를 제공하기 위해 : kdm 또는 lxdm으로 로그인 한 ~/.bash_profile경우, 존재하는 경우 읽습니다 ~/.profile. gdm으로 로그인하면 ~/.profile읽기만 가능합니다. xdm으로 로그인하면 ~/.profile읽을 수 없습니다.

내가 아는 모든 시스템은 사용자 별 환경 변수를 설정하는 방법을 제공합니다. 불행히도 일반적인 대답은 없습니다.

때때로 환경 변수를 설정 ~/.bashrc하거나 GUI 환경의 각 터미널에서 로그인 쉘을 시작 하라는 권장 사항이 표시 됩니다. 둘 다 나쁜 생각입니다. 이유 중 하나는 사용자가 경험 한 문제, 즉 환경 변수가 터미널을 통해 시작된 프로그램에서만 사용할 수 있고 아이콘이나 메뉴 또는 키보드 바로 가기로 직접 시작된 프로그램에서는 사용할 수 없기 때문입니다.


일부 응용 프로그램은 대화 형 비 로그인 셸을 호출하므로 .profile 및 .bash_profile을 읽을 수 없습니다. 해당 응용 프로그램에 대해 env vars를 설정하려는 경우이를위한 한 가지 방법은 .bashrc에 설정하는 것입니다. 참조 github.com/mobile-shell/mosh/issues/102#issuecomment-12503646
윌리엄

@William는 .profile로그인 할 때 읽기에 환경 변수 퍼팅. .bashrc일을하지 않으며, 시나리오가 설명을한다 : 환경 변수가 있어야이 쉘을 실행하지만 당신이 그들을 정의하는 경우 (아마도 GUI) 응용 프로그램 .bashrc, 그것은 '아무튼 티.
Gilles 'SO- 악마 그만

mosh는 GUI가 아니며 ssh의 대안입니다. 나는 연결된 Github 문제에 설명 된 것처럼, 나와 같은 문제를 겪고있는 다른 사람들을 돕기 위해 그 행동을 변호하지 않습니다.
William

2

결정적인 대답은 Bash Startup Files 의 bash 맨 페이지 섹션에 있습니다. "로그인 쉘이 아닌 대화식 쉘이 시작되면 Bash는 해당 파일이 존재하는 경우 ~ / .bashrc에서 명령을 읽고 실행합니다."

다른 질문에 대답하면 eshell이 ​​실제로 실행되지 않는다고 지적합니다 bash. 이맥스 eshell는 아닙니다 bash. 그 가정 eshell로드 할 것은 .bashrc가정 한 결함 zsh또는 csh로드합니다 .bashrc. 다른 껍질입니다.

두 가지 옵션이 있습니다.

  1. 디렉토리 목록을 가져와에 대한 적절한 bash 코드 bash및 elisp 코드를 생성하는 고유 한 스크립트를 작성하십시오 eshell.
  2. 실제로 emacs 내 에서 bash를 실행 하도록 ESHELL 또는 SHELL 환경 변수를 설정하십시오 . 그게 내가하는 일입니다. 배쉬는 이맥스에서 잘 작동합니다.

중복없이 경로에 디렉토리를 추가하는 것에 대한 토론에 관심이있을 수도 있습니다 .


1

~ / .profile에서 PATH를 설정하면됩니다. 이 파일은 bash를 포함하는 것으로 알고있는 모든 POSIX 호환 또는 Bourne과 같은 쉘에서 로그인 할 때 읽습니다. 해당 파일을 변경하면 변경 사항을 적용하려면 로그 아웃했다가 다시 로그인해야합니다. PATH는 로그인 프로세스 환경의 일부이므로 이후에 시작하는 모든 셸로 내 보내야합니다.

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.