Bunu düşün:
$ 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"
Neden bir bash -coturum içindeki bir değişkeni dışa aktarma ssh aracılığıyla çalıştırılırsa, bu declare -xkomutlar listesine (şu anda açıklayabildiğim kadarıyla dışa aktarılan değişkenlerin listesi) neden olur?
Aynı şeyi yapmadan çalıştırmak bash -cbunu yapmaz:
$ ssh localhost 'export foo=bar'
terdon@localhost's password:
$
Biz yapmazsak da olmaz export:
$ ssh localhost bash -c 'foo=bar'
terdon@localhost's password:
$
Bunu bir Ubuntu makinesinden diğerine (her ikisi de bash 4.3.11 çalıştıran) ve bir Arch makinesinde sshing yaparak yukarıda gösterildiği gibi kendisine sshing yaparak test ettim (bash sürüm 4.4.5).
Burada neler oluyor? Bir bash -cçağrının içindeki bir değişkeni dışa aktarma neden bu çıktıyı üretir?
export, ne olduğunu anlamaya çalışıyorum; Bunun yalnızca dışa aktarma sırasında olduğunu açıklığa kavuşturacağım.
exporttek başına koşmanın çıktısı mı? Anlamadığım için.
foo=barListede görünmediğini unutmayın .
export. Zsh da aynı şeyi yapar.