
나는 정기적으로 SSH를 통해 원격 호스트에 로그인해야 하며 bash 옵션을 사용하는 것을 좋아하며 일반적으로 특정 디렉토리에 set -o vi
로그인해야 합니다 . cd
이러한 호스트는 일시적이므로(정기적으로 생성 및 삭제됨) 해당 호스트에 로그인하여 /에 저장할 수 .bash_profile
없습니다 .bashrc
. 그래서 SSH를 통해 연결할 때 원격 서버에 연결할 때마다 동일한 명령을 입력할 필요가 없도록 이를 수행할 수 있는 방법을 찾고 있었습니다. 나는 이것을 달성하기 위해 여러 가지 방법을 시도했지만 그 중 아무것도 작동하지 않는 것 같습니다. 누군가 이 명령을 올바르게 수행하도록 도와줄 수 있나요? 한마디로 내가 하고 싶은 일은 이것이다.
cd
특정 디렉토리로- 배쉬 옵션 설정
set -o vi
내가 시도한 방법은 다음과 같습니다.
ssh [email protected] -t "cd /data; exec bash --login -c \"set -o vi\""
이것이 실제로 작동한다고 생각하지만 명령이 set -o vi
실행되면 다음과 같은 메시지와 함께 세션 연결이 끊어지기 때문에 SSH 세션이 종료됩니다.
Remotehost.com에 대한 공유 연결이 종료되었습니다.
이러한 명령을 실행한 후에 세션을 열어두는 방법이 있습니까, 아니면 원하는 것을 달성할 수 있는 다른 방법이 있습니까?
답변1
일부 옵션:
ssh -t [email protected] 'cd /data && exec bash --login -o vi'
ksh
(이것은 / zsh
/ dash
... 를 포함한 모든 POSIX 유사 쉘에서 작동하며 -o
POSIX sh
유틸리티 의 표준 옵션이며 vi
표준 옵션 중 하나입니다. 해당 명령줄은 Bourne을 포함한 모든 주요 쉘 제품군의 쉘과도 호환됩니다. csh, rc, fish는 루트 사용자의 로그인 셸에 관계없이 작동해야 합니다)
또는:
SSH -t[이메일 보호됨]'cd /data && exec env SHELLOPTS=vi bash --login'
사실, 당신은 두 번째 것을 사용하고 싶지 않습니다. 이는 $SHELLOPTS
변수가 환경에 있고 모든 bash
호출에 영향을 미친다는 것을 의미합니다(그리고 비대화형 변수는 모든 종류의 문제를 일으키는 대화형 쉘의 변수를 상속합니다).
또한 에는 두 가지 옵션 세트가 있다는 점에 유의하세요 . 하나는 / bash
로 설정 하고 다른 하나는 / 로 설정합니다 .-o
$SHELLOPTS
-O
$BASHOPTS
답변2
두 가지 명령을 수행하십시오.
- 원격 호스트에서 실행할 명령을 파일에 넣습니다
.bashrc.tmp
. $ scp .bashrc.tmp [email protected]:
$ ssh <options> [email protected] "bash --login --rcfile ${HOME}/.bashrc.tmp"
이렇게 하면 원본을 백업할 필요조차 없습니다 .bashrc
.
답변3
호스트의 한 폴더에서 다른 폴더로 쉽게 이동하려면 apparix를 설치하고 점프해야 하는 여러 위치에 북마크를 설정한 다음 to folderX
apparix에서 사용할 수 있습니다.https://micans.org/apparix/man/apparix.html
답변4
나는 공유된 사용자 ID로 원격 시스템을 사용하고 있으므로 시작 파일을 편집하고 싶지 않습니다. 왜냐하면 다른 모든 사람에게도 영향을 미치기 때문입니다. vi
하지만 여기에 게시한 내용을 통해 제가 원하는 옵션을 설정하는 방법을 알 수 있었습니다 . 내 ~/.ssh/config
파일 에 넣은 내용은 다음과 같습니다.
Host testsystem
User tester
RequestTTY yes
RemoteCommand exec /bin/bash --login -o vi
이는 매우 간단합니다. 당신이 원하는 "cd" 부분에 대해서는 모르겠습니다.