동적 .bash_profile 로그인 셸

동적 .bash_profile 로그인 셸

로그인한 환경을 기반으로 bash 환경 설정을 동적으로 설정하는 방법을 찾으려고 합니다.에서.

예를 들어:

  • .bash_profilexfce 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이 이 값으로 설정됩니다.

관련 정보