私は方法を使う
SSHユーザー@IP sh [runme.sh]
スクリプトをリモートで実行するには正常に動作します。しかし、問題が発生しました。つまり、runme.sh から ~/.bashrc で定義された環境変数を取得できません。スクリプトをローカルで起動するとすべてがうまく機能しますが、sshコマンドを使用してこれらの環境設定を取得するにはどうすればよいですか?
1つの可能な方法は、行を追加することです。
。 ~/.bashrc
最初はすべてのrunme.shにありますが、クライアント上の多くの「runme.sh」ファイルを変更する必要があります。より良い考えがありますか?
ベストアンサー1
~/.bashrc
対話的に実行するときは、bash構成(エイリアス、プロンプトなど)で使用されるファイルに環境変数を定義しないでください。環境変数の位置は、~/.profile
テキストモードで対話型セッションを開始すると読み取られ、多くのシステムではグラフィカルモードでも読み取られます。バラよりこの回答詳細については。
bash シェルを実行して、通常どおりリモート・システムの環境変数を設定するには、次のようにします。
ssh user@IP bash --login runme.sh
他のシェルの場合は、シェルを読むようにしてください.profile
(たぶん/etc/profile
):
ssh user@IP '. /etc/profile; . ~/.profile; exec runme.sh'
SSHを介してローカルセッションから環境変数をコピーしたい場合は可能ですが、通常はサーバー側では無効になります。読むこの回答詳細については。