
Я только изучаю основы, включая то, как объявлять и возиться с переменными. Есть ли простой способ отобразить список всех переменных, которые я назвал? (Все, что я нашел с помощью поиска, говорит только о переменных окружения, которые могут быть тем, что я ищу, но, вероятно, нет?)
решение1
Запуск declare
сам по себе предоставит вам список всех переменных среды.в текущей оболочке, включая те, которые вы определили сами. Он также будет включать любые функции, если только вы не используете опцию -p
, которая их пропускает, но добавляет немного дополнительного шума.
решение2
Существует 2 различных типа переменных (на самом деле их больше, но в данном контексте всего 2): частные и экспортируемые.
Частные переменные — это переменные, которые могут использоваться в оболочке (или скрипте), но не программами, запущенными оболочкой (или скриптом).
Вы можете получить список всех переменных, включая экспортированные, используяdeclare
,typeset
, илиset
. В bash все 3 делают одно и то же.Экспортированные переменные могут использоваться как оболочкой, так и программами, запущенными ею.
Вы можете получить список экспортированных переменных, используяenv
.
При выполнении таких действий следует учитывать один важный момент:
FOO="bar"
echo "$FOO"
$FOO
является частной/неэкспортируемой переменной. Оболочка фактически расширяется $FOO
до , bar
прежде чем передать ее в echo
. Поэтому echo
фактически вызывается как echo "bar"
.
Вы можете экспортировать переменные, выполнив export FOO
, или export FOO="bar"
.
Кроме того, вы можете экспортировать переменную для одного вызова программы, добавив переменную в начало команды. Например
FOO="bar" cmd1
cmd2
cmd1
будет иметь доступ, $FOO
но cmd2
не будет.