나는 종종 원격 호스트에 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'
( POSIX 유틸리티의 표준 옵션 으로 ksh
/ zsh
...를 포함한 모든 POSIX 유사 쉘에서 작동하며 표준 옵션 중 하나입니다. 명령줄은 Bourne, csh , rc, fish이므로 루트 사용자의 로그인 쉘이 무엇이든 관계없이 작동해야 합니다)dash
-o
sh
vi
또는:
SSH-t[이메일 보호됨]'cd /data && exec env SHELLOPTS=vi bash --login'
사실, 두 번째 것을 사용하고 싶지는 않습니다. 이는 $SHELLOPTS
변수가 환경에 있고 모든 bash
호출에 영향을 미친다는 것을 의미합니다(비대화형 호출은 대화형 셸에서 호출을 상속하므로 모든 종류의 문제가 발생함).
또한 bash
두 가지 옵션 세트가 있습니다. 하나는 -o
/settings 를 사용 $SHELLOPTS
하고 다른 하나는 -O
/settings 를 사용합니다 $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" 부분이 무엇을 원하는지 잘 모르겠습니다.