SSH 로그인시 .bashrc


374

Hardy 8.04를 실행하는 우분투 상자에 ssh를 넣을 때 내 환경 변수 .bashrc가 설정되지 않았습니다.

source .bashrc을 수행하면 변수가 올바르게 설정되고 모든 것이 잘됩니다.

.bashrc로그인시 어떻게 오지 않습니까?


92
지구상에서이 주제는 어떻습니까?
Jonah

8
나는 이것처럼 엄격하지는 않지만 내 추측은 이것이 serverfault.com, superuser.com 또는 askubuntu.com에 속해 있다는 것입니다
Michael Butler

16
@MichaelButler 합의. 왜 닫지 않고 왜 움직이지 않는지 궁금해 ...
Luc

4
@Luc-질문은 생성 된 후 60 일 이내에만 이동할 수 있습니다. 이 질문은 생성 된 지 3 년 반이되기 전에는 주제로 마무리되지 않았습니다. 60 일 규칙은 문제 데이터베이스가 백업 될 때와 관련이 있다고 생각합니다. 백업이 수행 된 후 마이그레이션하기가 더 어려워집니다.
ArtOfWarfare

나는 그것이 매우 유용한 질문이라고 생각했다. 머신 B로 ssh하기 위해 머신 A로 ssh해야 할 때 (A의 로컬 네트워크를 통해서만 액세스 가능)이 문제가 발생했습니다. 나에게 사이에 실질적인 차이 가르치는 .bashrc.bash_profile!
information_interchange

답변:


620

.bashrcSSH를 사용하여 로그인 할 때 소스가 제공되지 않습니다. 다음 .bash_profile과 같이 소스를 제공해야합니다 .

if [ -f ~/.bashrc ]; then
  . ~/.bashrc
fi

32
이것은 Bash와 함께 제정신 배포판에서 작동하므로 모든 주석은 쓸모가 없습니다 :)

1
.bashrcSSH를 할 때 기본적으로 제공 되므로 Ubuntu 12.04 LTS 서버에는 필요하지 않습니다 .
orokusaki

4
@orokusaki : 수정, 그것은 :) .profile을 건너 뛰는 불량 .bash_profile 파일이있었습니다.
Lester Peabody

4
@LesterPeabody와 마찬가지로 내 .bashrc는 불량 .bash_profile으로 인해 Ubuntu 12.04 LTS 서버에서 소스되지 않았습니다. RVM 설치로 작성되었습니다. RVM 명령을 .profile로 이동하고 .bash_profile을 삭제했습니다. 이제 모두 잘 작동합니다.
Rod Daunoravicius

4
FWIW 데비안 제시 / 이미 8 원 .bashrc아웃 - 오브 - 박스 -하지만 그것에서 작업을 수행 .profile하지 .bash_profile.
underscore_d

75

나는 Hobhouse와 비슷한 상황을 겪었습니다. 나는 명령을 사용하고 싶었다

 ssh myhost.com 'some_command'

'some_command'는 '/ var / some_location'에 있으므로 '$ HOME / .bashrc'를 편집하여 PATH 환경에서 '/ var / some_location'을 추가하려고했습니다.

그러나 그것은 작동하지 않았습니다. 기본 .bashrc (Ubuntu 10.4 LTS)는 아래와 같은 코드로 소싱을 방지하기 때문에

# If not running interactively, don't do anything
[ -z "$PS1" ] && return

ssh 비 로그인 쉘의 환경을 변경하려면 해당 줄 위에 코드를 추가해야합니다.


7
고마워 친구! 이것은 나를 위해 작동하지 않은 비트였습니다 :)
Raymond Barlow

시원한 팁 이슬. 젠킨스에서 스크립트를 실행할 때이 함정에 빠졌습니다. ssh를 통해 로그인했으며 작동했습니다. Jenkins는 비 대화식으로 로그인하여 실패했습니다.
Krzysztof Jabłoński

1
비 대화식 쉘에 대한 새로운 경로를 설정하지 않는 것이 일반적인 솔루션 인 이유는 저를 넘어선 것입니다. 이러한 이유로 if 문보다 약간 더 높아야합니다. 별칭과 대화 형 도구의 초기화 만 해당 줄 아래로 이동해야합니다.
BenPen

2
우분투의 다른 버전에서 대화식 검사는 다음과 같습니다.bash # If not running interactively, don't do anything case $- in *i*) ;; *) return;; esac
Sylvain

고마워, 이것은 나를 위해 해결했습니다. 한 시간 전에 이것을 보았 으면 좋겠다!
저스틴 로렌스

31

bash 호출의 작동 방식, 도트 파일의 기능 및 사용 / 구성 방법에 대한 훌륭한 자료를 보려면 다음을 읽으십시오.


주요 구절 : "/ etc / profile을 읽은 다음 .bash_profile 또는 .bash_login 또는 .profile 중 하나를 읽게됩니다."
Andy Hayden

29

ayman의 솔루션이 작동하지 않으면 .profile대신 파일 이름을 지정하십시오 .bash_profile. 그것은 나를 위해 일했다.


2
대박. 나는이 세부 사항에서 15 분을 잃었습니다.
vmassuchetto

이것은 우분투 12.10에서 트릭을 수행했습니다
ThinkCode

1
GUI 로그인에 .profile 이로 드된다고 생각합니다. .bash_profile 터미널 로그인 용입니다.
Razec Luar

이것은 데비안 Jessie 도커 컨테이너에 SSH 로그인하는데도 효과적이었습니다 (영구 저장을 위해 데이터 전용 컨테이너 사용). 그러나 / etc / passwd를 확인하여 로그인 쉘이 / bin / bash인지 확인하고 / bin / sh가 아닌지 확인할 수 있습니다 -------> / bin / dash
Stuart Cardall

1
@RazecLuar .profile해당 쉘이 GUI를 스폰 하려는지 여부에 관계없이 모든 로그인 쉘에서 실행됩니다 . 귀하의 의견은 질문 과이 답변에 완전히 모순됩니다.이 답변 .profile은 SSH가 아닌 다른 GUI 방법으로 호출 되었음을 나타냅니다 .
underscore_d
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.