В чем разница между set, env, declare и export при установке переменной в оболочке Linux?

в чем разница между set,env,declare и export при установке переменной в оболочке Linux, например bash?

9
задан DavidPostill
14.12.2022 1:21 Количество просмотров материала 3062
Распечатать страницу

1 ответ

Кажется, что set и declare немного отличаются, причем set является более мощным.

"объявления" в разделе https://www.gnu.org/software/bash/manual/bash.html#Bash-Builtins declare: "объявляйте переменные и присваивайте им атрибуты. Если имена не указаны, вместо них отображаются значения переменных.

набор "набор" под https://www.gnu.org/software/bash/manual/bash.html#The-Set-Builtin * set :" эта сборка настолько сложна, что заслуживает свой раздел. set позволяет изменять значения параметров оболочки и задавать позиционные параметры, а также отображать имена и значения переменных оболочки."

ENV-переменная окружения в Bash: https://www.gnu.org/software/bash/manual/bash.html#Bash-Variables env-это команда Linux. Я думаю, что это хорошая ссылка: https://unix.stackexchange.com/questions/103467/what-is-env-command-doing

Я думал, что это было хорошее объяснение экспорта: http://www.unix.com/302531838-post2.html

также: https://www.gnu.org/software/bash/manual/bash.html#Bourne-Shell-Builtins * экспорт (из Bourne): "отметьте каждое имя, которое будет передано дочерним процессам в среде."

заимствование кода из URL выше:

root@linux ~# x=5                <= here variable is set without export command
root@linux ~# echo $x
5
root@linux ~# bash               <= subshell creation
root@linux ~# echo $x            <= subshell doesnt know $x variable value
root@linux ~# exit               <= exit from subshell
exit
root@linux ~# echo $x            <= parent shell still knows $x variable
5
root@linux ~# export x=5         <= specify $x variable value using export command
root@linux ~# echo $x            <= parent shell doesn't see any difference from the first declaration
5
root@linux ~# bash               <= create subshell again
root@linux ~# echo $x            <= now the subshell knows $x variable value
5
root@linux ~#
5
отвечен Shawn P. 2022-12-15 09:09

Постоянная ссылка на данную страницу: [ Скопировать ссылку | Сгенерировать QR-код ]

Ваш ответ

Опубликуйте как Гость или авторизуйтесь

Имя
Вверх