Список всех моих переменных

Список всех моих переменных

Я только изучаю основы, включая то, как объявлять и возиться с переменными. Есть ли простой способ отобразить список всех переменных, которые я назвал? (Все, что я нашел с помощью поиска, говорит только о переменных окружения, которые могут быть тем, что я ищу, но, вероятно, нет?)

решение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не будет.

Связанный контент