답변:
PS1
변수 를 보내고 싶은데 변수에 '
(작은 따옴표)가 포함되어 있지 않으면 다음을 시도하십시오.
ssh targethost -t "PS1='$PS1'; exec bash"
그러나 현지인 .bashrc
은 덮어 쓸 수 있습니다 PS1
( Dennis Williamson 이 이것을 지적 해 주셔서 감사합니다 ).
ssh를 통해 환경 변수를 전송 하는 방법이 있지만 일반적으로 서버 구성에서 비활성화됩니다. 는 IF PermitUserEnvironment
지시어가 활성화되어 서버 구성 및 각 사용자 (예, 당신은 정말 운이되지 않을 수도 있습니다) 자신의 키 쌍을 가지고, 당신은 추가 할 수 environment="PS1=…"
있는 라인에 ~/.ssh/authorized_keys
당신의 키에 대응.
공유 사용자 계정에 고유 한 구성을 유지하려면 고유 한 구성 파일 디렉토리를 작성 HOME
하고 해당 디렉토리를 가리 키도록 환경 변수를 설정할 수 있습니다.
ssh targethost mkdir mrstatic.home
scp .bashrc targethost:mrstatic.home/
mrstatic.home
다른 사용자와 파일을 공유하려는 경우 상위 디렉토리의 해당 항목을 다시 가리키는 디렉토리에 기호 링크를 작성하십시오 .
그런 다음 로그인
ssh targethost -t 'HOME=~/mrstatic.home; exec bash'`
원격 .profile
(또는 다른 초기화 파일) 을 수정하려는 경우 설정을 자동화 할 수 있습니다. 많은 사이트에서 LC_*
환경 변수를 허용 합니다 (일반적으로 로케일 설정에 사용됨). 이 두 조건이 모두 충족되면 LC_USER
클라이언트 측에서 로케일에 실제로 사용되지 않는 변수를 설정 하고 서버에서 테스트 할 수 .profile
있습니다.
(물론 공유 계정은 나쁜 생각이지만 그 상황을 바꿀 위치에 있지 않을 수도 있습니다.)
ssh -t user@host "remote='$PS1' bash -i"
그런 다음 프롬프트에서 다음을 수행하십시오.
PS1=$remote
PS1
셸 시작 중에 덮어 쓰는 것은 드문 일이 아닙니다 . exec 없음 : 내 시스템에서 테스트하는 동안 아무런 차이가없는 것 같습니다-추가 프로세스가 없습니다.
.bashrc
이 덮어 쓸 가능성이 높습니다 PS1
.
클라이언트 측에서 환경 변수를 지정할 수 있으며 ssh-server에서 허용하는 경우 (man sshd-config 확인) 이러한 변수는 시스템에 로그인 할 때 세션에 복사됩니다.
따라서 서버에서 .bashrc를 구성하여 기존 PS1 (또는 변수)을 확인하고 아직 설정되지 않은 경우 PS1 만 설정해야합니다.
또는 더 간단하게 만들려면 설정을 함수 ..로 묶고 해당 기능을 요청시 소스 파일 ( source joes_bashrc
) 또는 .bashrc에 직접 특수 파일로 배포하십시오 . 자신의 파일을 갖는 것이 좀 더 강력 해 보입니다. 다른 사람들이 당신의 설정을 사용할 수도 있지만 그렇게하지는 않을 것입니다.
로그인을 공유하지 마십시오. 자신과 같은 SSH는, 다음을 수행 sudo -su shareduser
( -s
수단 "쉘").
확인 sudo
홈 디렉토리를 유지 :
Defaults env_keep += "HOME"
여분의 scp가 필요없이 그것을하고 싶다면 다음과 같이 할 수 있습니다 :
ssh -t srvname ' cp ~/.bashrc ~/.bashrc.n &>/dev/null ; echo "LS_COLORS=\"no=00:fi=00:ETC:ETC:ETC\";" >> ~/.bashrc.n ; echo "export LS_COLORS" >> ~/.bashrc.n ; echo "alias ls=\"ls --color=auto\";" >> ~/.bashrc.n ; exec bash --rcfile ~/.bashrc.n'
서버 bashrc를 기반으로하지만 재정의로 .bashrc.n을 생성합니다.
동료에게 눈에 띄지 않게 침입하고 자신의 선호도를 방해하지 않는다고 믿을 수 있다면 cYrus의 답변 , akira의 답변 및 Dennis Williamson의 답변을 조합하여 제안합니다 .
~/.bashrc
및 추가if [ "$ Unf"= 1] # Unfundednut의 특수 코드 그때 PS1 = " (원하는 프롬프트) " (원하는 다른 사용자 정의) fi끝에. 동료들은“기본 프로필을 작성해 주셔서 감사하지는 않지만”찾아 보지 않으면이를 알지 못합니다.
ssh -t 사용자 @ 호스트 "Unf = 1 bash -i"로컬 계정의 별칭 또는 셸 함수에 넣기를 원할 수도 있지만 다른 답변보다 짧아서 수동으로 쉽게 입력 할 수 있습니다.
나는 이것이 분명하다고 생각하지만, ssh
명령은 Unf
변수가 로그인 할 때 원격 서버에서 설정되도록합니다. 그러면 remote에서 코드가 호출되어 .bashrc
사용자 정의가 적용됩니다. 의 끝에 코드를 넣었으므로 .bashrc
파일의 앞부분에있는 일반 설정보다 우선합니다.
공개 : 나는 이것을 테스트하지 않았습니다.
sshfs / nfs에 집을 설치하는 것과 같은 일을 할 수 있지만 가장 쉬운 해결책은 bashrc를 새 컴퓨터로 scp하는 것입니다. 이것은 또한 별칭과 물건을 가져옵니다.
"PS1='$PS1' bash -i"
왜 (그리고 왜 그렇게하지exec
않습니까)?