Работая с выполнением оболочки Ruby с помощью обратной цитаты или синтаксиса %x
, я обнаружил, что когда я объявляю новую переменную в bash, она не видна в сценарии ruby, пока я не сделаю ее средой командой export
.
Пожалуйста, объясните механизм, почему переменные оболочки не видны скриптом?
# Shell and Environment variables.
V123='This is an variable. VAR HERE.'
echo $V123
# Read shell variable via Ruby
ruby -e 'p `echo $V123`' # "$V123\n"
ruby -e 'p %x[echo $V123]' # "$V123\n"
# Check SET for this var
set | grep V123
ruby -e 'p `set | grep V123`' # ""
ruby -e 'p %x[set | grep V123]' # ""
# Put this var itno the Environment
echo "--- Export"
printenv V123
export V123
printenv V123
echo "--- Ruby printenv"
ruby -e 'p `printenv V123`' # This is an variable. VAR HERE.\n"
ruby -e 'p %x[printenv V123]' # This is an variable. VAR HERE.\n"