এই বিবেচনা:
$ 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:
$
আমি এটি একটি উবুন্টু মেশিন থেকে অন্যটিতে (উভয় চলমান বাশ ৪.৩.১১) এবং একটি আর্চ মেশিনে ছুঁড়ে দিয়ে পরীক্ষা করেছি, উপরের মত বর্ণিতভাবে নিজের দিকে ঝাঁকুনি দিয়েছি (বাশ সংস্করণ ৪.৪.৫)
এখানে কি হচ্ছে? bash -c
কলটির অভ্যন্তরে কোনও পরিবর্তনশীল রফতানি করলে এই আউটপুটটি কেন উত্পাদিত হয়?
export
, আমি কী ঘটছে তা বোঝার চেষ্টা করছি। আমি পরিষ্কার করতে সম্পাদনা করব যে রফতানির সময় কেবল এটি ঘটে।
export
একা চালানোর আউটপুট ? আমি বুঝতে পারি নি যে।
foo=bar
তালিকায় প্রদর্শিত হবে না।
export
। Zsh একই জিনিস করে।