[解決済み】SSHリモートコマンドを手動で実行すると、なぜ環境変数が少なくなるのか?[クローズド]
2022-04-06 17:59:43
質問
あるマシンに ssh して実行するとうまくいくコマンドがあるのですが、.NET のようなリモート ssh コマンドを使用して実行しようとすると失敗します。
ssh user@IP <command>
両方の方法で "env" の出力を比較すると、異なる環境での結果が得られます。手動でマシンにログインして env を実行すると、.NET を実行したときよりもはるかに多くの環境変数が得られます。
ssh user@IP "env"
なぜでしょうか?
解決方法は?
シェルには様々な種類があります。SSHコマンド実行シェルは非対話型シェルで、通常のシェルはログインシェルと対話型シェルがあります。以下、man bashより説明します。
ログインシェルとは、引数の最初の文字が がゼロのもの、または --login オプションで起動したものです。 対話型シェルとは、非オプションなしで起動するシェルです。 引数および-cオプションなしで、標準入力 とエラーがともにターミナルに接続されている(と判断される)。 isatty(3) で起動されたもの、または -i オプションで起動されたものです。 PS1 は を設定し、$-はbashが対話型である場合にiを含む。 シェルスクリプトや起動ファイルで、この状態をテストすることができます。 次の段落では、bashがどのように実行されるかを説明します。 スタートアップ・ファイル もし、ファイルが存在するにもかかわらず を読み込むと、エラーを報告します。 チルダはファイルの中で展開されます。 のチルダ展開で説明するように、名前にチルダを使用します。 EXPANSIONセクションを参照してください。 bashが対話型ログインシェルとして起動された場合、あるいは 非対話型シェルで --login オプションを指定した場合、最初に etc/profileからコマンドを読み込んで実行します。 が存在します。 そのファイルを読み込んだ後、次のファイルを探します。 ~/.bash_profile、~/.bash_login、~/.profileの順です。 の順番で、最初のものからコマンドを読み込んで実行します。 が存在し、読み取り可能であること。 また,--noprofileオプションは シェル起動時に使用すると、この動作を抑制することができます。 イオール。 ログインシェルが終了するとき、bashは、コマンドの読み込みと実行を行います。 が存在する場合は、~/.bash_logout ファイルから取得します。 ログインシェルでない対話型シェルが存在する場合、そのシェルは を起動すると、~/.bashrc.のコマンドを読み込んで実行します。 が存在する場合は、そのファイルを削除します。 この機能を無効にするには --norc オプションを指定します。 rcfile ファイルオプションを付けると、強制的に bash の代わりに、ファイルからコマンドを読み込んで実行します。 ~/となります。 bashが非対話的に起動されたとき、シェル スクリプトは、例えば、BASH_ENV 変数を検索します。 環境にある場合は、その値が展開されます。 拡張された値を読み込むファイル名として使用します。 と実行します。 Bashは、次のようなコマンドを実行したように動作します。 が実行されました。 if [ -n "$BASH_ENV" ]; then . "$BASH_ENV"; fi が、PATH変数の値は検索に使用されません。 というファイル名が表示されます。
関連
-
[解決済み】Gitのエラー。リモートリポジトリへの接続時に「Host Key Verification Failed」。
-
[解決済み] SSHでサーバからローカルコンピュータにファイルをコピーする【終了しました
-
[解決済み] ファイアウォール内のサーバーにSSH接続する
-
[解決済み] Git上でシェルコマンドを実行する際に使用するSSH-keyの秘密鍵を指定する方法は?
-
[解決済み] コマンドラインからすべての環境変数をリストアップ
-
[解決済み] Windowsのコマンドプロンプトから環境変数を更新するコマンドはありますか?
-
[解決済み] Mac OS X Lionで環境変数を設定する
-
[解決済み] sudo使用時に環境変数を保持する方法
-
[解決済み] SSHキーです。"パーミッション 0644 for 'id_rsa.pub' is too open." on mac
-
[解決済み】SSH-PK-Authenticationで後で使用するためにPKCS12ファイルから公開鍵/秘密鍵を抽出する。
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み] 単一のコマンドでssh経由でコマンドが見つからない、ターミナルに接続したら見つかった[重複]。
-
[解決済み] SSHでサーバからローカルコンピュータにファイルをコピーする【終了しました
-
[解決済み] PPKファイルからPEMを作成する [重複]。
-
[解決済み] ファイアウォール内のサーバーにSSH接続する
-
[解決済み】~/.ssh/authorized_keysに公開鍵を追加しても自動でログインしない
-
[解決済み】GitHubの複数アカウントとSSH設定
-
[解決済み】SublimeをSSHで使用する方法
-
[解決済み】Amazon EC2インスタンスにSSH接続しようとすると、「警告:保護されていないプライベートキーファイルがあります!」と表示される。
-
[解決済み】ansibleのSSH認証チェックを無視する方法は?
-
[解決済み】「sign_and_send_pubkey: signing failed: agent refused operation」を解決する方法は?