Bash가 Linux의 새 세션에서 '.profile'을로드하지 않습니다


22

IT 부서에서 얻은 새로운 Linux 컴퓨터를 설정하고 .profile있는데 새 터미널 세션을 시작할 때로드되지 않는 것으로 나타났습니다 . 현재 쉘은 배쉬 내가 기본에서 변경했지만, 가 함께했다. .profile시작시 어떻게 로드 합니까?

나는 통해 쉘에 액세스 SSH : ssh myusername@remotemachine. 관리자 권한이 있습니다.


쉘을 시작하는 데 사용하는 명령을 보여주십시오.
Nifle

답변:


24

Bash가 대화식 로그인 셸로 시작할 때 처리 할 있는 파일 중 하나 는 ~/.profile입니다.

대화 형 비 로그인 셸로 시작할 때는 그렇지 않습니다. 그것은 처리 /etc/bash.bashrc하고 (해당 파일 또는 유사한 파일이 배시의 버전을 사용하는 경우) ~/.bashrc.

다음을 추가 할 수 있습니다 ~/.bashrc(그러나 루프 또는 값이 실수로 변경되지 않도록주의 하십시오 ).

. $HOME/.profile

8
.bashrc 소스를 .profile (권장하지 않음)으로 가져 오려면 이중 소싱을 방지해야합니다. 가드 변수 설정 [ -z "$SOME_VAR_SET_IN_PROFILE" ] && . ~/.profile
Rich Homolka

2
그래, 나도 그것을 권장하지 않습니다.
추후 공지가있을 때까지 일시 중지되었습니다.

12
로그인 쉘은 ~ / .bash_profile, ~ / .bash_login 및 ~ / .profile을 순서대로 시도하고 찾은 첫 번째 것만 엽니 다.
Beano

3
다른 사람들이 말했듯이, 일반적인 방법은 프로필과 "친구"(.bash_profile)가 다른 방법이 아닌 .bashrc를 소스로 보내는 것이므로 권장하지 않습니다. 터미널 프로그램이 로그인 쉘이 아니라 대화식 비 로그인 쉘일 수 있습니다. .profile, .login 및 / 또는 .bash_profile을 실행하기 위해 로그인 쉘로 설정하는 환경 설정이 종종 있습니다.
rholmes 2016

15

쉘을 시작하는 방법에 따라 다릅니다. 다른 사람들이 말했듯이 로그인 쉘은 프로파일을로드합니다 (먼저 .bash_profile을 찾은 다음 .profile을 시도합니다). 이 중 하나를 찾으면로드합니다. 비 로그인 쉘 (대화식 또는 비 대화식)은 .bashrc를 소스로합니다.

모든 것을 .bashrc에 넣는 것이 좋습니다. tty는 단순한 장치 이름이 아니고 실제 TeleType을 의미했을 때 .profile / .bashrc 스플릿은 일종의 임의적이며 유닉스 시절에 더 의미가 있습니다. 서버에 대한 '메인'로그인에서 메일을 확인하는 것과 같은 특정 작업을 시작하고 다른 쉘의 일반적인 설정 작업을 시작했습니다. 대부분의 Linux에서 지금 로그인하게되면 일부 그래픽 인터페이스 (KDE, gnome, CDE 'shudder')에 로그인 할 때 실제로 쉘에 로그인하지 않습니다. 세션 관리자가 "스폰 로그인 프로세스"를 처리합니다. 지금은 덜 관련이 있습니다.

내 제안 : .profile을 전적으로 구성하십시오.

[ -f $HOME/.bashrc ] && . $HOME/.bashrc

.bashrc의 첫 번째 줄로, bash 스크립트를 실행할 때 발생하는 이상한 일을 조기에 피하십시오.

[[ $- != *i* ]] && return

5
.profile배쉬에 무관심해야한다. .bash_profile로드 .profile하고 로드 하도록 구성 하는 것이 좋습니다 .bashrc. 단지 bash는 불가지론에 물건을 넣어 .profile같이 PATH하고 LC_*물건을. 나머지는에 넣습니다 .bashrc.
레즈 마나

@Rich Homolka 왜 명령에서 [-f $ HOME / .bashrc]가 두 번입니까? 게시 한 명령이 '과 어떻게 다른가요? $ HOME / .bashrc '?
David Doria

1
팁 : stdout 또는 stderr에 쓰는 .bashrc에 SCP와 같은 비대화 형 클라이언트를 손상시킬 수있는 어떤 것도 넣지 마십시오. 출력이있는 것 (예를 들어, 포춘 쿠키와 가동 시간을 맞이하고 싶습니다)은 .profile / .bash_profile
Brian A. Henning

@Lotharyx true입니다. 우리는 표준 -ish kshrc를 가지고 stdout으로 내보내고 Xserver를 시작했습니다 (벌새 초과)
Rich Homolka
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.