iterm2에서 ssh 후 에코 명령 트리거 -ne “\033]0;$HOSTNAME\007″‘ 아무것도 작동하지 않는 것

“ssh somehost”다음에 다음 명령을 트리거하려고합니다.
export PROMPT_COMMAND='echo -ne "\033]0;$HOSTNAME\007"'

아무것도 작동하지 않는 것 같습니다, 어떤 제안?



답변

나는 그것을 할 수 있다고 생각하지 않습니다.

우선 나는 당신의 명령을 다시 써야했습니다. 비록 이것이 당신이 얻고 자하는 것이 달성 될 수 없다는 사실 (나중에 보라)에 의해 무효화되지만, 그렇게하는 방법은 어느 정도 흥미롭고 일반적이므로, 나는 그것을 논의 할 것입니다. 나는 당신의 명령을

  ssh me@remote 'COLOR=("echo" "-ne" "\"\\033[48;5;95;38;5;214m\$HOSTNAME\033[0m\""); export PROMPT_COMMAND=${COLOR[@]}'

그 이유는 로컬 쉘이 $HOSTANMElocal값 으로 대체하는 것을 막을 필요가 있기 때문에 원격 서버에 전달하는 것은 작은 따옴표로 묶어야합니다 '. 이것이 작동 하려면 명령 내부에 작은 따옴표 가 없어야 하므로 원격으로 실행되도록 명령에 작은 따옴표가 나타나지 않도록 다시 작성해야했습니다. 나는 이것을 배열로 관리했다 COLOR. 명령

COLOR=("echo" "-ne" "\"\\033[48;5;95;38;5;214m\$HOSTNAME\033[0m\"") export PROMPT_COMMAND=${COLOR[@]}

현지에서 잘 작동합니다 (색상 선택은 내 것입니다).

ssh를 통해 환경 변수를 내보내는 방법에는 두 가지가 있습니다. 먼저, AcceptEnv서버 /etc/ssh/sshd_config파일 에서 변수 를 변경할 수 있습니다 : 그러나 수동 상태

수락

클라이언트가 보낸 환경 변수가 세션의 환경에 복사 될 것을 지정합니다 .

여기에서 강조는에없는 세션 : 전역 변화.

두 번째 방법은 PermitUserEnvironment변수를 사용하는 것입니다.

허가 사용자 환경

Specifies whether ~/.ssh/environment and environment= options in
 ~/.ssh/authorized_keys are processed by sshd.  The default is
 "no".  Enabling environment processing may enable users to bypass
 access restrictions in some configurations using mechanisms such
 as LD_PRELOAD.

보시다시피 , 원격 사용자가 전역 환경 변수를 변경할 수 없도록ssh 주의 하십시오 .


답변