SSH를 통해 로그인할 때 자동으로 환경 변수 설정(루트 액세스 없음)

SSH를 통해 로그인할 때 자동으로 환경 변수 설정(루트 액세스 없음)

상태:

가상 머신에서 Ubuntu 12.04 LTS를 실행하고 있습니다.

나는 종종 대학 서버의 내 계정에 연결해야 하는데, 터미널을 열고 .ssh -Y [email protected]

일단 거기에 있으면 항상 다음 명령을 실행해야 합니다

setenv PYTHONPATH "place/stuff/this_goes_on_forever"

다른 여러 줄의 코드가 있습니다.

내가 원하는 것은:

  1. 나의 주요 요청: 스크립트를 준비하고 SSH를 통해 서버에 로그인할 때 자동으로 실행하고 싶습니다.

  2. 이것은 부차 쿼리이지만 (예를 들어) 새 별칭을 사용할 때 alias p="pwd""사용"하지 않습니다. p이 경우 입력 결과는 "명령을 찾을 수 없습니다"입니다. 이것은 단지 루트가 아니기 때문입니까, 아니면 SSH를 통해 로그인했기 때문입니까, 아니면 해결 방법이 있습니까?

해결 방법을 시도해 보세요.

export PYTHONPATH="..."로컬 파일에 추가하려고 했는데 , 이는 ~/.bashrc터미널을 시작할 때 PYTHONPATH설정되었음을 의미하지만 ssh서버로 이동한 후에는 더 이상 설정되지 않습니다(글쎄, 호스트에 대한 완전히 새로운 환경 변수가 있습니다). ~/.bash_profile나중에 시도했지만 성공하지 못했습니다 .

서버의 파일 export PYTHONPATH="..."에 추가하고 파일 에도 추가해 보았지만 둘 다 작동하지 않습니다.~/.bash_profile~/.bashrc

서버에 대한 루트 액세스 권한이 없으므로 AcceptEnv서버의 파일을 변경할 수 없으며 읽기 전용입니다.PermitUserEnvironementsshd_config

물론 이 코드를 넣을 수 있는 곳이 있는데, 어디에 있는지 찾을 수 없습니다.

답변1

여기서 고려해야 할 두 가지 사항이 있습니다.

  1. bash원격 서버에서 사용 하지 않는 것 같아서 .bashrc합계를 .bash_profile읽을 수 없습니다.

  2. ssh원격 서버에서 로그인 쉘을 시작하십시오.실행 bash중이며 .bashrc읽을 수 없습니다. 이 파일은 로그인이 아닌 대화형 쉘에서만 읽을 수 있습니다.

그러나 많은 로그인 쉘은 ~/.profile어떤 쉘을 사용하고 있는지 언급하지 않았기 때문에 확신할 수 없지만 ~/.profile(원격 서버의) 파일에 다음 줄을 추가하면 변수가 설정됩니다.

PYTHONPATH="place/stuff/this_goes_on_forever"

을(를) 실행 중이므로 tcsh시작 파일이 다릅니다. 에서 man tcsh:

   A login shell begins  by  executing  commands  from  the  system  files
   /etc/csh.cshrc  and  /etc/csh.login.   It  then  executes commands from
   files in  the  user's  home  directory:  first  ~/.tcshrc  (+)  or,  if
   ~/.tcshrc  is not found, ~/.cshrc, then ~/.history (or the value of the
   histfile shell variable), then ~/.login, and finally ~/.cshdirs (or the
   value  of  the  dirsfile  shell  variable)  (+).   The  shell  may read
   /etc/csh.login before instead of  after  /etc/csh.cshrc,  and  ~/.login
   before  instead  of  after  ~/.tcshrc or ~/.cshrc and ~/.history, if so
   compiled; see the version shell variable. (+)

따라서 원격 서버 setenv에 해당 명령을 추가 해야 합니다.~/.tcshrc

마지막으로, 이것이 더 편한 것 같으니 bash원격 서버에서 사용하는 셸을 변경해 보는 것은 어떨까요? 서버에 로그인하고 실행하면 됩니다.

chsh

/bin/bash이를 기본 쉘로 설정하면 이러한 모든 문제가 사라집니다. 그러면 원격 서버에서 ~/.profile또는 편집을 통해 원하는 변수와 별칭을 설정할 수 있습니다 .~/.bash_profile

답변2

서버에서 csh를 사용하고 있는 것 같습니다. 서버에서 csh 시작에 코드를 추가하세요. csh에서 별칭을 설정하는 구문은 bash의 구문과 약간 다릅니다. 정보를 얻으려면 서버에서 man csh를 실행하세요.

답변3

다음 명령을 실행하여 사용 중인 셸을 테스트합니다.

echo $SHELL

bash이고 ~/.bashrc를 자동으로 읽지 않는 경우 ~/.bash_profile 파일을 생성해야 할 수도 있습니다.

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

이 점에 대해:

그 후 ~./.bash_profile을 시도했지만 성공하지 못했습니다.

구성 파일을 가져오려는 경우 구문이 잘못된 것입니다. 환경 파일을 얻으려면 다음 명령을 실행하십시오.

. ~/.bash_profile

관련 정보