このことを考慮:
$ ssh localhost bash -c 'export foo=bar'
terdon@localhost's password:
declare -x DBUS_SESSION_BUS_ADDRESS="unix:path=/run/user/1000/bus"
declare -x HOME="/home/terdon"
declare -x LOGNAME="terdon"
declare -x MAIL="/var/spool/mail/terdon"
declare -x OLDPWD
declare -x PATH="/usr/bin:/bin:/usr/sbin:/sbin"
declare -x PWD="/home/terdon"
declare -x SHELL="/bin/bash"
declare -x SHLVL="2"
declare -x SSH_CLIENT="::1 55858 22"
declare -x SSH_CONNECTION="::1 55858 ::1 22"
declare -x USER="terdon"
declare -x XDG_RUNTIME_DIR="/run/user/1000"
declare -x XDG_SESSION_ID="c5"
declare -x _="/usr/bin/bash"
bash -cセッション内の変数をssh経由で実行すると、declare -xコマンドのリスト(現在エクスポートされている変数のリスト、私が知る限り)が発生するのはなぜですか?
なしで同じことを実行しても、それbash -cは行われません。
$ ssh localhost 'export foo=bar'
terdon@localhost's password:
$
しない場合も発生しませんexport。
$ ssh localhost bash -c 'foo=bar'
terdon@localhost's password:
$
これをテストするには、1つのUbuntuマシンから別のUbuntuマシン(bash 4.3.11を実行している両方)に、またArchマシンで、上記のように自分自身にスッシング(bashバージョン4.4.5)します。
何が起きてる?bash -c呼び出し内で変数をエクスポートすると、なぜこの出力が生成されるのですか?
export何が起こっているのか理解しようとしています。これは、エクスポート時にのみ発生することを明確にするために編集します。
exportrun alone の出力だということですか?私が理解していなかったこと。
foo=barリストに表示されないことに注意してください。
export。Zshも同じことをします。