bash.bashrc와 / etc / environment 파일의 차이점


42

bash.bashrc파일 에서 환경 변수를 설정하는 데 사용한 날짜까지 . 최근에 /etc/environment파일 을 사용하라는 지시를 받았습니다 . 글쎄, 둘 다 잘 작동합니다.

그렇다면 차이점은 무엇입니까?

나는 이것을 구글 검색하고 "bashrc는 시스템 전체에서 특정 사용자 및 환경에 사용된다"는 것을 발견했다. 여기서 시스템 전체의 의미는 무엇입니까? /etc/bash.bashrc또한 시스템 전체에 변경 사항을 적용하고 있다고 생각합니다. 내가 틀렸다면 나를 바로 잡으십시오. 어떤 종류의 도움도 감사하겠습니다 ..

답변:


35

한 가지 차이점은 /etc/environment변수 정의 만 포함하고 모든 종류의 변수 확장 / 보간을 거치지 않는 것입니다. 따라서 정의에서 변수를 참조 할 수 없습니다. 예를 들어 이것은 작동하지 않습니다.

A="else"
B="something $A"

문자 그대로 B는 something $A예상 된 것이 아닙니다 something else.

이 질문을 참조하십시오 .

그건 그렇고, Google을 통해 찾은 답변 ~/.bashrc은 시스템 전체가 아닌 사용자의을 나타내는 것으로 보입니다 /etc/bash.bashrc. 혼동을 일으킬 수 있습니다.


/ etc / environment와 /etc/bash.bashrc가 동일한 두 파일이있을 때 ~ / .bashrc의 목적은 무엇입니까?
trapaank

6
사용자가 bash를 열면 /etc/bash.bashrc가 실행됩니다. ~ / .bashrc는 저장된 홈 디렉토리의 소유자가 bash를 여는 경우에만 실행됩니다.
André Stannek

18

/etc/environment파일은 부팅의 모든 사용자에 대해 다양한 변수 시스템을 설정합니다. 사용자가 쉘을 열면의 명령 /etc/bash.bashrc이 실행됩니다 bash. 따라서 bash쉘을 한 번 이상 열지 않으면 변수가 설정되지 않습니다 .


미안 나는 리눅스 초보자입니다. bash 쉘이 열릴까요? 그리고 bash 쉘이 열릴 때 또 다른 것은 / etc / enviornment에 설정된 변수를 무시합니까?
trapaank

/ etc / environment가 정확히 언제 실행되는지는 확실하지 않지만 데스크탑 환경에 들어가면 Ubuntu가 /etc/bash.bashrc를 실행합니다. 그래서 변수를 설정하면 작동합니다. 데스크탑에 들어가기 전에 부팅하는 동안 / etc / environment가 한 번 실행되고 /etc/bash.bashrc가 변수를 덮어 씁니다. 그러나 다시 한번 : 나는 이것에 대해 확신하지 못한다.
André Stannek

4
부팅이 아닌 로그인 상태입니다!
slm

6

" 시스템 전체 " 에 대해 질문 할 때 :

/etc디렉토리 에있는 구성 파일 은 시스템의 모든 사용자에게 적용됩니다. 들어 /etc/bash.bashrc이 해당 시스템에 강타 일명 "부담 다시 쉘"을 사용하고있는 모든과 모든 것을 의미 할 것입니다. 당신이 그것을 사용하는 유일한 사람이더라도 "기술적 인 사용자"가 영향을받을 수 있습니다 ( /etc/passwd"/ bin / bash"라는 용어가 얼마나 자주 언급되어 있는지 확인하고 사용 grep bash /etc/passwd | wc -l하십시오. 해당 번호를 직접 (즉, "/ etc / passwd"파일에서 문자열 "bash"를 포함하는 모든 행을 "움직여") 그 결과 ( "|")를 "wc"(단어 수) 명령으로 보내 행 수를 계산합니다. ("-엘").

따라서 사용자의 경우 ~/.bashrc대신 수정하는 것이 훨씬 안전합니다 (예 : 홈 디렉토리에서 ".bashrc"파일 (예 : 맨 앞에 점이 있음 /home/ankur/.bashrc)). 그러면 사용자에게 영향을 미치고 다른 모든 내용은 그대로 둡니다. . /etc시스템 전체의 변경이 실제로 의도 된 경우에만 파일을 변경해야합니다.

게다가 : 두 구성 모두 존재한다면 사용됩니다. 먼저 시스템 전체 파일 (여기서는 /etc/bash.bashrc)을 읽고 "소스로"(현재 세션에 적용한 설정) 사용자 /home/username/.bashrc가 동일하게 처리하므로 전역에서 설정을 추가하거나 변경 / 덮어 쓰기 할 수 있습니다. /etc/bash.bashrc파일.


3

시스템 및 사용자 범위에 대한 논의 외에도 가장 중요한 차이점은 이외의 스크립트 /etc/environment아닙니다~/.bashrc .

내부적으로 변수를 역 참조 할 수 없으며 /etc/environment변수 할당은 문자 그대로 (로드 미러에서 이미 언급 한대로) 라인 값을 사용합니다.

새로운 경로를 추가 하여 $PATH내부 를 망칠 경우 Ubuntu가 잠 깁니다./etc/environment

PATH=$PATH:/new_path

Ubuntu Gnome 또는 Unity 로그인 페이지에서 잘못된 비밀번호를 불평하지 않고 로그인 할 수없는 경우 그리고 최근에 수정 /etc/environment했습니다. 대부분의 경우입니다.

수정은 가상 콘솔 CTRL+ ALT+ F1로그인 콘솔에 로그인하고 수동으로 확인 $PATH하고 /etc/environment파일을 수정하는 것 입니다.

따르면 , /etc/environment선으로 환경 변수 라인을 채우는 PAM 스택으로로드된다.


-1

이 둘의 차이점은 /etc/enivironment파일이 모든 사용자에 대해 작동하고 bash.bashrc 파일은 특히 해당 사용자에 대해서만 작동한다는 것입니다. 그리고 /etc/environment파일 에서 잘못된 것을 수행 하면 / etc / environment 파일의 내용을 복사하여 bash.bashrc 파일의 변경 사항을 쉽게 취소 할 수 있지만 결과는 심각 할 수 있습니다. 그러나 첫 번째 기본 설정은 bash.bashrc파일과 / etc / environment 파일입니다. bash.bashrc파일을 변경 하면 터미널이 먼저 로컬 사용자 파일 (즉, bash.bashrc)을 선택한 다음 기본 파일 (즉, /etc/environment)을 우선적으로 사용하는 것은 아닙니다 .


~ / .bashrc 및 /etc/bash.bashrc 파일을 혼동하고 있다고 생각합니다. 첫 번째는 쉘을 여는 사용자에게 국한되며, 두 번째는 쉘을 여는 모든 사용자에게 전역 적입니다.
Dennis
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.