動的.bash_profileログインシェル

動的.bash_profileログインシェル

ログインした環境に基づいてbash設定を動的に設定する方法を見つけたいと思います。から。

たとえば、

  • .bash_profilexfce GUIでターミナルセッションを開くと、デフォルトの設定で「デフォルト」(より良い単語がない)がロードされます。

  • 他のFreeBSD(またはLinux)システムがSSH経由で接続している場合でも、この「デフォルト」が使用されます。.bash_profile

  • MacでSSH経由で接続すると、追加の設定が追加されます(例:iTerm2シェルの統合)

私は環境変数のテストについて考えましたが、SSH_CLIENTその日にSSHを介して取得したコンピュータのDHCPアドレスに応じて変更されます。

リモートシステムのプラットフォームが何であるかを確認し、それに応じて処理する方法はありますか.bash_profile

私がそれを「自分で含める」ことができない場合は.bash_profile、そうすることができるように何かを「送信」できますか?

ベストアンサー1

リモートシステムのプラットフォームが何であるかを確認し、それに応じて.bash_profileを処理する方法はありますか?

簡単ではありません。ネットワークの状態が許可されている場合は、次のものを使用できます。地図$SSH_CLIENTは元のIPのオペレーティングシステムを識別しようとしますが、これは必ずしも信頼できるわけではありません。

ソースシステムが別のネットワークセグメントにある場合は、ソースシステムを区別するおおよその指標として使用できますが、お客様の場合はそうではありません。

Macの接続が他のタスクを実行したいので、1つのオプションは、MacのSSH接続をターゲットにラップするか、別名を指定してbashに確認するカスタム環境変数を渡すことです。

alias ssh2it='ssh -t targethost "_origin=mac bash -il"'

次に、ターゲットホストの ~/.bashrc を次のように設定します。

case $_origin in
(mac)
        echo mac-specific settings here
        ;;
(other-custom-system)
        echo other settings here
        ;;
(*)
        echo any default settings here
        ;;
esac

このアイデアを異なる動作をしたい他のすべてのタイプのシステムに拡張する必要があります。これは、変数が設定されるように各対話型ログインをラップすることを意味します。

ターゲットシステムのsshd_configをさらに制御できる場合は、/etc/ssh/sshd_configを編集して以下を追加できます。

AcceptEnv _origin

(その後、sshdをリサイクルします)。

次に、元のシステムで~/.ssh/configを編集してこの変数を送信します。

Host targetsystem
  SendEnv _origin

ターゲットに接続する前に、以下を実行してください。

export _origin=mac

その後、ターゲットシステムにログインすると、$ _originがこの値に設定されます。

おすすめ記事