SSH経由でbashを実行してもドットファイルはインポートされません。パート2 [重複]

SSH経由でbashを実行してもドットファイルはインポートされません。パート2 [重複]

重複の可能性:
SSH経由でコマンドを実行すると、ドットファイルはインポートされません。

これは前の記事の連続です。私の質問SSH経由でコマンドを実行すると、ドットファイルはインポートされません。(元の投稿には600文字しか許可されていないため、十分な情報を追加できません。間違っている場合は申し訳ありません。)


要するに:私が持っているなら強く打つHost1とHost2のデフォルトシェル

Host1で次のコマンドを実行した場合:

ssh host2 ~/some/path/somescript.py 動作しません。

このためですまったく.-ファイルがリモートホストで発生するため、私のPYTHONPATHは設定されておらず、=コマンドは失敗します。


これは問題の短いバージョンにつながります。

いいえ。リモートホストでbashを実行するとき(つまり、非対話的に)取得するファイル。

これを実証するために、リモートホストに次のファイルを作成しました。

  • .bash_login
  • .bash_config ファイル
  • .bashrc
  • 。輪郭

echo コマンドを最初の行に追加します。つまり:

  • .bash_loginで: echo ".bash_loginでこんにちは"
  • .bash_profileで: echo "こんにちは、.bash_profileで"
  • .bashrcによる: echo ".bashrcでこんにちは"
  • .profileで: echo ".profileでこんにちは"

しかし、私が走って話すなら

ssh name@host2 "ls ~/foo" "ls" 出力のみが表示され、エコー出力は表示されません。

なぜエコーされますか?その人は実際にこう言いました。

bashが非対話型で始まるとき、たとえばシェルスクリプトを実行するために環境で変数BASH_ENVを見つけてそこに表示されたら、その値を拡張し、拡張値をファイルとして読み込み、実行します。 。実装する。 Bashは、次のコマンドが実行されたかのように動作します。if [-n "$BASH_ENV"]; "$BASH_ENV"; fi ですが、PATH 変数の値は f の検索には使用されません。

つまり、見えるマニュアルによるとBashが非対話式で始まる場合、デフォルトで実行される.-fileはありません。

環境で設定する必要があります。ファイルを取得したい場合はvar-le "BASH_ENV"です。

しかし、これは不可能なことのようです。ソースファイルがないので、BASH_ENVなどを設定できますか? ! ? ! ? ! ?

これはクレイジーだと思います。 SSHを介してリモートシステムで非対話式でbashを実行する必要がある地球上の唯一の人ですか?

助けてください。よろしくお願いします。

ベストアンサー1

オプションで、これらのファイルのいずれかをインポートし、次のようにして同じssh呼び出しで.pyスクリプトを実行できます。ssh user@host ". ./.dot-command && python_script.py

おすすめ記事