로그인한 환경을 기반으로 bash 환경 설정을 동적으로 설정하는 방법을 찾으려고 합니다.에서.
예를 들어:
.bash_profile
xfce GUI에서 터미널 세션을 열면 기본 환경 설정과 함께 "기본값"(더 나은 단어가 없음)이 로드됩니다.다른 FreeBSD(또는 Linux) 시스템에서 SSH를 통해 연결하는 경우에도 이 "기본값"이 사용됩니다.
.bash_profile
Mac에서 SSH를 통해 연결하면 추가 설정이 추가됩니다(예: iTerm2 셸 통합)
환경 변수 테스트에 대해 생각했지만 SSH_CLIENT
그날 SSH를 통해 얻은 컴퓨터의 DHCP 주소에 따라 변경됩니다.
원격 시스템의 플랫폼이 무엇인지 확인하고 그에 따라 처리할 수 있는 방법이 있습니까 .bash_profile
?
내가 그것을 "자체적으로 포함"할 수 없다면 .bash_profile
, 그렇게 할 수 있도록 뭔가를 "보낼" 수 있습니까?
답변1
원격 시스템의 플랫폼이 무엇인지 확인한 다음 그에 따라 .bash_profile을 처리하는 방법이 있습니까?
간단하지 않습니다. 네트워크 상태가 허락한다면 다음을 사용할 수 있습니다.지도$SSH_CLIENT에서 원래 IP의 운영 체제를 식별하려고 시도하지만 이것이 반드시 신뢰할 수 있는 것은 아닙니다.
소스 시스템이 다른 네트워크 세그먼트에 있는 경우 이를 소스 시스템을 구별하는 대략적인 지표로 사용할 수 있지만 귀하의 경우에는 그렇지 않습니다.
Mac의 연결이 다른 작업을 수행하기를 원하기 때문에 한 가지 옵션은 Mac의 SSH 연결을 대상에 래핑하거나 별칭을 지정하여 bash가 확인할 사용자 지정 환경 변수를 전달하도록 하는 것입니다.
alias ssh2it='ssh -t targethost "_origin=mac bash -il"'
그런 다음 대상 호스트의 ~/.bashrc를 다음과 같이 설정합니다.
case $_origin in
(mac)
echo mac-specific settings here
;;
(other-custom-system)
echo other settings here
;;
(*)
echo any default settings here
;;
esac
이 아이디어를 다르게 동작하려는 다른 모든 유형의 시스템으로 확장해야 합니다. 이는 변수가 설정되도록 각 대화형 로그인을 래핑하는 것을 의미합니다.
대상 시스템의 sshd_config를 추가로 제어할 수 있는 경우 /etc/ssh/sshd_config를 편집하여 다음을 추가할 수 있습니다.
AcceptEnv _origin
(그런 다음 sshd를 재활용합니다).
그런 다음 원래 시스템에서 ~/.ssh/config를 편집하여 이 변수를 보냅니다.
Host targetsystem
SendEnv _origin
대상에 연결하기 전에 다음을 실행하십시오.
export _origin=mac
그런 다음 대상 시스템에 로그인하면 $_origin이 이 값으로 설정됩니다.