bashrc 또는 bash_profile?


49

두 bash 로그인 스크립트의 차이점을 알고 있습니다.

.bashrc "비 로그인"셸에서만 실행됩니다.

.bash_profile(또는 .bash_login또는 .profile)는 "로그인"쉘에 의해 실행됩니다.

사람이 로그인 전용 실행을 위해 더 잘 맞는 어떤 물건, 같은 난 단지에 넣어 거라고의 좋은 사례가 있습니까 .bash_profile,하지만 그들은 정말에 이해가되지 것을 .bashrc?

(나는 우리 대부분은 소스 알고 .bashrc에서 .bash_profile... 그래서 반대 문제 많은 포인트가 될 것 같지 않습니다)


답변:


24

.bashrc비 로그인 쉘을위한 것이므로 화면에 에코되는 명령을 피하십시오. 또한 echo 문 .bashrc이 sftp 및 rsync 명령을 실패하게하는 경험 (scp 명령도 가능)을 경험했습니다.

# Print some information as we log in
# -s: OS Name -n: Node name -r: OS Release
uname -snr
uptime

또한 일반적으로 비 대화식 쉘에서 ssh-agent를 실행하지 않습니다. 그래서 나는 이것을 가지고 있습니다 .bash_profile.

if [ -f ~/.ssh/ssh-agent ]; then . ~/.ssh/ssh-agent; fi

2
~ / .bash_profile 대신 ~ / .profile을 사용하면 셸을 변경하더라도 여전히 작동합니다. ~ / .bash_profile은 bash 특정 항목을위한 것입니다.
LassePoulsen

1
그러나 bash는 EITHER .bash_profile 또는 .profile 만 실행하므로 두 가지를 모두 사용하려면 .bash_profile 또는 .bash에서 .profile을 소싱해야합니다. 그것은 실제로 나쁜 생각이 아닙니다.
Don Faulkner

@Source & @Don : 좋은 지적. .bash_profile에 Bashisms가 있었지만 이제는 더 보편적 인 것으로 전환했습니다. .profile을 사용하는 것이 좋습니다.
Stefan Lasiewski

표준 스트림을 통해 구현 된 원격 파일 전송 방법 .bashrc방해 하는 출력 생성 명령 과 관련 하여 솔루션은 그러한 명령 셸이 대화 형인지 확인하고 그대로있는 경우에만 계속되는 코드에 배치하는 것입니다. 사용자의 기본 .bashrc에서 복사 우분투의 파일, /etc/skel/.bashrc계정 생성뿐만 아니라 시스템 전체시는 /etc/bash.bashrc쉘이 비대화 경우 (하나는 여전히 하나의 출력을 생산하는 명령을 삽입해야하지만, 이미 확인하는 코드와 수익을 포함 에 따라 그).
Eliah Kagan

8

Byobu는 절대로 넣지 말아야 할 좋은 예입니다 .bashrc.

그렇지 않으면 '가상 터미널'의 모든 하나에서 재귀 적으로 실행됩니다. ;-)

당신은 그것을 시도 할 수 있습니다, 그것은 일종의 재미입니다.

그래서 당신이 그것을 넣은 이유는 .profilebyobu (실제로 화면을 감싸는 래퍼입니다)는 로그인시 한 번만로드됩니다. 그리고 byobu 자체가 새로운 대화식 bash 세션을 시작할 수 있습니다.


좋은 예입니다. Byobu에 대한 포인터에 감사드립니다. 이제 시도해보십시오.
Don Faulkner
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.