2014-11-15 2 views
2

OSX 및 Linux에서 다른 zsh의 키 조합에 명령을 바인드하려고합니다. 현재 상태는내 터미널에서 어떤 운영 체제가 실행됩니까?

if [[ "$(uname)" == "Darwin" ]]; then 
    bindkey "^e" some-command # Ctrl+E for OSX 
else 
    bindkey "^[e" some-command # Alt+E for Linux 
fi 

입니다. 그러나이 두 시스템 간의 ssh 연결에는 작동하지 않습니다. 실제로, 어떤 OS에서 내 이 실행되고 있는지 확인하고 싶지는 않지만 어떤 OS에서 내 터미널이 실행되고 있습니까? 그 정보를 얻는 방법이 있습니까?

제본에 사용 된 키의 세부 사항에 초점을 두지 마십시오. 상황이 명확하게하려면 : 그

편집이 시점 :)에서 관련 아니에요 Iterm2, Guake 또는 Xterm

  • 는 쉘이 같은

    • 터미널이 꼬추, 당신은, 당신의 명령을 입력 수신 제가 쉬 것을 생각하고 Bash, Zsh 또는 Fish
  • 답변

    2

    ssh은 서버에 환경 변수를 보낼 수 있으며 기본적으로 몇 가지 변수에 대해이 작업을 수행합니다. 클라이언트 운영 체제에 대한 정보는 기본 목록에 포함되어 있지 않지만 확장 될 수 있습니다.

    1. 필요한 정보가있는 변수를 설정하고 내 보내야합니다. uname의 출력으로 가거나 OSTYPE을 복사 할 수 있습니다 (변경하는 것이 좋지 않을 수 있으므로 OSTYPE을 직접 사용하면 안됩니다). 당신이 두 시스템 모두에서 당신의 ~/.zshrc이 같은 뭔가가 필요 그래서 (어딘가에 위에 당신은 물론, 그것을 필요로하기 전에) : 이전에 해제했다 경우

      export CLIENT_OSTYPE=${CLIENT_OSTYPE:-$OSTYPE} 
      

      OSTYPE의 값으로 CLIENT_OSTYPE을 설정합니다. 따라서 로컬로 로그인하면 OSTYPE으로 설정됩니다. 그러나 ssh으로 로그인하면 전달 된 CLIENT_OSTYPE으로 설정됩니다.

    2. 이제 실제로 CLIENT_OSTYPE을 서버에 전달하도록 SSH 클라이언트를 설정해야합니다. 이를 위해 당신은 SendEnv 항목 ssh 클라이언트 구성을 편집해야 - 전 세계적으로 사용자의 특정 (~/.ssh/config) 또는 (Mac의 리눅스에서 대부분의 경우 /etc/ssh/ssh_config, /etc/ssh_config) 중 하나를

      SendEnv CLIENT_OSTYPE 
      

      그것은 이미 몇 가지 값으로 설정 될 수있다 글로벌 구성 (내 경우에는 LANG LC_*),이 경우 단지 목록에 추가 :

      SendEnv LANG LC_* CLIENT_OSTYPE 
      
    3. 마지막으로, 당신은 실제로이 환경 변수를 허용하도록 SSH 서버를 구성해야합니다.이것은 AcceptEnv을 수정하여 Mac에서 리눅스에 /etc/ssh/sshd_config/etc/sshd_config으로 수행 할 수 있습니다

      AcceptEnv LANG LC_* CLIENT_OSTYPE 
      

    당신은 다음을 사용할 수 있습니다

    AcceptEnv CLIENT_OSTYPE 
    

    유사 SendEnv이 또한 이미 값으로 설정 될 수 있습니다 값을 CLIENT_OSTYPE으로 설정하여 사용할 구성을 결정하십시오.

    -1

    같은 명령을 실행 꼬추, ell 명령 arch가 도움이 될 것입니다.

    32 비트 또는 64 비트 MacOS 시스템인지 여부도 알려줍니다.

    +1

    'arch'는 ** shell **이 실행되는 시스템에 관한 정보만을 보여줍니다. 또한 OSX에서만 사용 가능합니다 (Linux 시스템에서 호출 할 수 있다면 문제의 해결책이 될 수 있습니다 - 그러나 그것은 할 수 없다). – eugenk

    +0

    fwiw, [ "내가 사용하는 리눅스 버전에"''arch''가 있습니다.] (https://wiki.archlinux.org/index.php/man_page). –

    +0

    아, 그럼 AUR 검색 결과에서 올바른 패키지를 보지 못했습니다. 최소한 내 ArchLinux 시스템에서는 기본적으로 사용할 수 없습니다. – eugenk

    관련 문제