시스템별 bashrc에 대한 호스트 이름 대안

시스템별 bashrc에 대한 호스트 이름 대안

SSH를 통해 연결하는 서버 세트는 시스템별 구성을 위해 기본 .bashrc의 스위치 문을 사용합니다.

case "$HOSTNAME" in:
    systemA*|systemB|)
        # some local definitions here
        ;;
    systemC*|systemD|)
        # some local definitions here
        ;;
    *)
        echo "No bashrc definitions for $HOSTNAME"
   esac

하지만 저는 Mac에서 로컬로 bash도 사용하므로 SSH를 통해 다른 연결에 연결하지 않는 경우도 포함하도록 이 설명을 현명하게 확장하기로 결정했습니다.

그러나 맥은내 네트워크 환경에 따라 선호하는 호스트 이름을 자주 변경합니다.(보통 직장에 있을 때는 집에서 Wi-Fi 대신 유선 연결을 사용하는데, DHCP 구성에 따라 달라지는 것 같습니다.) 이를 무시할 수 있다는 것을 알고 있지만 이것이 최선의 아이디어입니까? bashrc 설정이 원격 셸에 없을 때만 작동하도록 하는 더 나은 솔루션이 있습니까?

답변1

다음을 수행할 수 있습니다.

case "$HOSTNAME" in: 
    systemA*|systemB)
        # some local definitions here 
        ;;
    systemC*|systemD)
        # some local definitions here 
        ;; 
    *) 
        if [ "$(uname)" = "Darwin" ]; then
            echo "I'm on a Mac!"
        else
            echo "No bashrc definitions for $HOSTNAME" 
        fi
esac

uname귀하가 사용하고 있는 시스템에 대한 많은 기본 정보가 제공됩니다. uname --help옵션.

고쳐 쓰다:

또는 (이것이 내가 한 일입니다. 보시다시피여기내 .bashrc의 끝에서 수행할 수 있는 작업은 .bashrc_local_DarwinMac 특정 구성과 .bashrc_local_LinuxLinux 특정 구성을 만드는 것입니다. 연결된 모든 Mac과 Linux 시스템에서 계속 작동하므로 버전 제어에 들어갈 수 있습니다. 따라서 .bashrc_local당신이 해야 할 일은해당 상자에만 적용됩니다.버전 관리에 넣지 마십시오. 그러면 이 파일들을 얻을 수 있습니다만약 그들이 존재한다면잠깐만요, 당신은 매우 깔끔한 시스템을 갖고 있고, 투박하지도 않고 case...esac진술을 유지하기 어렵지도 않습니다.

관련 정보