상태:
가상 머신에서 Ubuntu 12.04 LTS를 실행하고 있습니다.
나는 종종 대학 서버의 내 계정에 연결해야 하는데, 터미널을 열고 .ssh -Y [email protected]
일단 거기에 있으면 항상 다음 명령을 실행해야 합니다
setenv PYTHONPATH "place/stuff/this_goes_on_forever"
다른 여러 줄의 코드가 있습니다.
내가 원하는 것은:
나의 주요 요청: 스크립트를 준비하고 SSH를 통해 서버에 로그인할 때 자동으로 실행하고 싶습니다.
이것은 부차 쿼리이지만 (예를 들어) 새 별칭을 사용할 때
alias p="pwd"
"사용"하지 않습니다.p
이 경우 입력 결과는 "명령을 찾을 수 없습니다"입니다. 이것은 단지 루트가 아니기 때문입니까, 아니면 SSH를 통해 로그인했기 때문입니까, 아니면 해결 방법이 있습니까?
해결 방법을 시도해 보세요.
export PYTHONPATH="..."
로컬 파일에 추가하려고 했는데 , 이는 ~/.bashrc
터미널을 시작할 때 PYTHONPATH
설정되었음을 의미하지만 ssh
서버로 이동한 후에는 더 이상 설정되지 않습니다(글쎄, 호스트에 대한 완전히 새로운 환경 변수가 있습니다). ~/.bash_profile
나중에 시도했지만 성공하지 못했습니다 .
서버의 파일 export PYTHONPATH="..."
에 추가하고 파일 에도 추가해 보았지만 둘 다 작동하지 않습니다.~/.bash_profile
~/.bashrc
서버에 대한 루트 액세스 권한이 없으므로 AcceptEnv
서버의 파일을 변경할 수 없으며 읽기 전용입니다.PermitUserEnvironement
sshd_config
물론 이 코드를 넣을 수 있는 곳이 있는데, 어디에 있는지 찾을 수 없습니다.
답변1
여기서 고려해야 할 두 가지 사항이 있습니다.
bash
원격 서버에서 사용 하지 않는 것 같아서.bashrc
합계를.bash_profile
읽을 수 없습니다.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