SSH (Ubuntu)를 사용할 때 ~ / .profile이로드되지 않습니다


22

내가 정말로 해결하고 싶었던 문제를 반영하도록 편집했습니다.

Capistrano를 통해 배포 할 수 있도록 루비 환경을 설정해야합니다.

export PATH=$HOME/.rbenv/bin:$PATH
eval "$(rbenv init -)"

~ deploy / .profile에 넣었지만 ssh를 입력하면 실행되지 않습니다. 아이디어?

우분투 12.04를 실행 중입니다.


원래 질문은 다음과 같습니다.

localhost의 다른 계정으로 ssh하면 .profile 이로 드되지 않습니다. ssh가 강제로로드하는 방법은 무엇입니까? 우분투 12.04를 실행 중입니다.

답변:


15

대화식 로그인 쉘을 시작하도록 명시 적으로 지정할 수 있습니다.

 ssh user@host bash --login -i 

(또는 ~. / bash_profile) 및 ssh 의 "역할" 에는 다른 파일이 있습니다 ( 자세한 내용 참조).~/.profile.bashrcman ssh

~ / .ssh / 환경

환경 변수에 대한 추가 정의를 포함합니다. 위의 환경을 참조하십시오.

~ / .ssh / rc

이 파일의 명령은 사용자의 쉘 ​​(또는 명령)이 시작되기 직전에 사용자가 로그인 할 때 ssh에 의해 실행됩니다. 자세한 내용은 sshd (8) 매뉴얼 페이지를 참조하십시오.


ssh가 다른 도구에 의해 실행되고 (지속적인 전달) 명령을 쉽게 변경할 수 없기 때문에“당신은”사실이 아닐 수도 있습니다.
Jan Hudec

6

.profilessh 세션이 아닌 기본적으로 로그인 쉘에 대해서만로드됩니다. 모든 대화식 쉘에 대해 시작시 무언가를 실행하려면 .bashrc대신 (또는 .zshrc쉘이 사용하는 것) 넣습니다 .

또한 로컬 컴퓨터에서 다른 계정으로 로그인하려는 경우 ssh가 너무 과도 할 수 있습니다. su대신에 무언가 를 사용하고 싶을 수도 있습니다 .


3
.bashrc로드되지 않은 것 같습니다 .
kenorb

이것은 올바르지 않습니다. 그것은 이다 로그인 쉘. 매뉴얼 페이지에서 : "명령이 지정되면, 로그인 쉘 대신 원격 호스트에서 실행됩니다."
MKJ


ssh를 실행하는 명령을 지정하는 경우, 기본적으로는 할 수 없는 청각 장애를 할당 한 후 쉘은 중 "대화"가 아닙니다.
Jan Hudec

4

bash를 사용하면 다음과 같이 읽습니다 ~/.bashrc. 다음은 ksh 및 sh (sh 모드의 bash) 또는 ~/.bashrc로그인 중에 실행되지 않은 경우에 도움이 될 수 있습니다 .

SSHD 문의 할 ~/.ssh/environment(권한이 있는지 확인하기 위해 sshd_config에 (5)) 및 ~/.ssh/sshrc~/.ssh/rc. 이 설정에 가능성을 제공 ENV=~/.profile하거나 BASH_ENV=~/.profileSSH_LOGIN=Y

에서 ~/.profile나는 다음과 같은 레이아웃을했습니다 (교체 ENVBASH_ENV떠들썩한 파티를 사용하는 경우) :


if [[ -n $SSH_LOGIN || -z $ENV ]]; then
     # Put here login initialization code
     unset SSH_LOGIN
     ENV=~/.profile
fi
 # Put here code thats get executed with each ksh/sh invocation


0

Bash ~/.profile는 로그인 쉘인 ~/.bash.bashrc경우에만 그리고 터미널이있는 경우 에만 읽습니다. 기본적으로 ssh를 사용하여 명령을 호출 할 때는 둘 중 하나도 아닙니다. 그러나 불행히도 시스템 설정에 따라 서버에서 환경을 설정하는 몇 가지 다른 옵션이 있습니다.

  • ~/.zshenv이 경우에도 Zsh는 읽습니다 . bash에 해당하는 구성 파일이 없습니다.
  • PermitUserEnvironment옵션이 설정되어 있으면 /etc/sshd_configssh가 읽습니다 ~/.ssh/environment. 불행히도이 옵션은 기본적으로 해제되어 있습니다.
  • 이 경우 pam_env.so로 호출 user_readenv=1/etc/pam.d/sshd, 그것을 읽을 것이다 ~/.pam_environment. 모듈의 기본값은 아니지만 적어도 우분투에서는 그렇게 호출 됩니다.
  • 다른 모든 방법이 실패하면 command=환경을 설정 $SSH_ORIGINAL_COMMAND하고 끝에 실행하는 래퍼 스크립트를 호출하는 권한이 부여 된 키 파일에 지시문을 넣을 수 있습니다 (명령은 쉘에 대한 명령이므로 여기서 eval이 적합하지만 확실하지 않습니다) .

0

당신은 아마이 ~/.bash_profile, 어떤 무시 ~/.profile.

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