システム固有の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を介して他の接続に接続しない場合も含めるようにこの説明を賢く拡張することにしました。

しかし、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_DarwinMac固有の構成と.bashrc_local_LinuxLinux固有の構成を作成することです。接続されているすべてのMacとLinuxシステムで動作し続けるので、バージョン管理に入ることができます。したがって、.bashrc_localあなたがすべきことはそのボックスにのみ適用されます。バージョン管理に入れないでください。これでこれらのファイルを入手できますもし彼らが存在するならちょっと待って、あなたは非常にきちんとしたシステムを持っていて、それを逮捕せずにcase...esac声明を維持するのは難しいことではありません。

関連情報