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_Darwin
Mac 특정 구성과 .bashrc_local_Linux
Linux 특정 구성을 만드는 것입니다. 연결된 모든 Mac과 Linux 시스템에서 계속 작동하므로 버전 제어에 들어갈 수 있습니다. 따라서 .bashrc_local
당신이 해야 할 일은해당 상자에만 적용됩니다.버전 관리에 넣지 마십시오. 그러면 이 파일들을 얻을 수 있습니다만약 그들이 존재한다면잠깐만요, 당신은 매우 깔끔한 시스템을 갖고 있고, 투박하지도 않고 case...esac
진술을 유지하기 어렵지도 않습니다.