나는 종종 서버에 로그인하고 특정 디렉토리로 CD를 이동합니다. 이 두 명령을 하나로 단순화할 수 있습니까?
ssh bob@foo
cd /home/guest
가능하다면 "foo"에 대한 내용은 변경하지 않고 싶습니다. 이를 지우려면 서버 관리자와 협력해야 하기 때문입니다. 나는 bash를 사용하지만 다른 쉘에서 답변을 얻을 수 있습니다.
답변1
이는 OpenSSH에서 작동합니다.
ssh -t bob@foo 'cd /home/guest && exec bash -l'
마지막 매개변수는 로그인 쉘에서 실행됩니다. 대화형 셸에 필요한 의사 터미널을 강제 할당하기 -t
위해 전달된 플래그입니다. bash에 다음 과 같이 전달된 플래그ssh
ssh
-l
bash
로그인 쉘.
답변2
~bob/.bash_profile 파일의 마지막 줄을 foo에 넣으세요.
cd /home/guest >& /dev/null
이제 로그인할 때마다(SSH를 통해든 다른 방식으로든) cd 명령이 실행됩니다. SSH를 망칠 필요가 없습니다.
"가능한 경우 'foo'에 대한 변경을 피하고 싶다"고 쓴 것을 알고 있습니다. 하지만 bob@foo 계정이 귀하의 것이라면 자신의 .bash_profile을 변경하는 것이 허용되어야 합니다. 그렇죠?
답변3
@EvanTeitelman의 솔루션과 유사하게 이 작업을 수행할 수도 있습니다.
$ ssh -t bob@foo "cd /tmp ; bash"
또는 반대편의 쉘을 모르는 경우:
$ ssh -t bob@foo "cd /tmp && exec \$SHELL"
또는 다음과 같습니다:
$ ssh -t bob@foo 'cd /tmp && exec $SHELL'