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を介して他の接続に接続しない場合も含めるようにこの説明を賢く拡張することにしました。
しかし、Macは私のネットワーク環境に応じて、優先ホスト名を頻繁に変更します。(通常は職場にいるときは、自宅で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
声明を維持するのは難しいことではありません。