Я немного новичок в Linux, и я случайно запускаю некоторые команды вслепую, чтобы все было сделано. Я думал, что это не будет пустой тратой времени на задание таких вопросов, поскольку новые люди будут регулярно знать об этом.
Недавно я начал работать с дженкинсами, а затем мне пришлось использовать эту команду экспорта для запуска военного архива jenkins. Поэтому мне нужно было знать, что делает команда 'export', и почему нам нужно запускать эту команду во время запуска jenkins (после того, как дом jenkins установлен).
Ответ 2
Я предполагаю, что вы исходите из окон. Поэтому я сравню их (я тоже новичок в Linux). Я нашел ответ пользователя на свой комментарий, чтобы быть полезным в том, чтобы разобраться.
В Windows переменная может быть постоянной или нет. Термин "переменная среды" включает переменную, установленную в командной строке cmd с командой SET, а также когда переменная задана в графическом интерфейсе Windows, поэтому устанавливается в реестре и становится видимой в новых окнах cmd. например документация для команды sed в окнах https://technet.microsoft.com/en-us/library/bb490998.aspx "Отображает, устанавливает или удаляет переменные среды. Используется без параметров, задает текущие настройки среды". В Linux набор не отображает переменные среды, он отображает переменные оболочки, которые он не вызывает/не ссылается как переменные среды. Кроме того, Linux не использует набор для установки переменных (помимо позиционных параметров и параметров оболочки, которые я объясняю в качестве примечания в конце), только для их отображения и даже тогда только для отображения переменных оболочки. Windows использует набор для настройки и отображения, например. set a = 5, linux - нет.
В Linux, я думаю, вы можете сделать script, который устанавливает переменные при загрузке, например. /etc/profile
или /etc/.bashrc
, но в остальном они не постоянны. Они хранятся в ОЗУ.
В Linux существует различие между переменными оболочки и переменными среды. В Linux переменные оболочки находятся только в текущей оболочке, а переменные среды - в этой оболочке и всех дочерних оболочках.
Вы можете просмотреть переменные оболочки с помощью команды set
(хотя обратите внимание, что в отличие от окон переменные не установлены в Linux с помощью команды set).
set -o posix; set
(сначала выполнить этот набор -o posix, помогает не отображать слишком много ненужных вещей). Поэтому set
отображает переменные оболочки.
Вы можете просмотреть переменные среды с помощью команды env
переменные оболочки задаются, например, просто a=5
переменные окружения устанавливаются с экспортом, экспорт также устанавливает переменную оболочки
Здесь вы видите переменную оболочки zzz с zzz = 5, и ее просмотр отображается при запуске set
, но не отображается как переменная среды.
Здесь мы видим yyy set with export, поэтому это переменная среды. И увидите, что это отображается как в переменных оболочки, так и в переменных среды
$ zzz=5
$ set | grep zzz
zzz=5
$ env | grep zzz
$ export yyy=5
$ set | grep yyy
yyy=5
$ env | grep yyy
yyy=5
$
другие полезные темы
https://unix.stackexchange.com/questions/176001/how-can-i-list-all-shell-variables
https://askubuntu.com/questions/26318/environment-variable-vs-shell-variable-whats-the-difference
Примечание. Один момент, который немного уточняет и в некоторой степени корректирует то, что я написал, заключается в том, что в linux bash, "set" может использоваться для установки "позиционных параметров" и "параметров/атрибутов оболочки", и технически оба из них являются переменными, хотя страницы руководства могут не описывать их как таковые. Но все же, как уже упоминалось, set не будет устанавливать переменные оболочки или переменные среды). Если вы выполняете set asdf
, тогда он устанавливает $1 в asdf, и если вы делаете echo $1
, вы видите asdf. Если вы выполняете set a=5
, он не будет устанавливать переменную a, равную 5. Он установит позиционный параметр $1, равный строке "a = 5". Поэтому, если вы когда-либо видели набор a = 5 в linux, это, вероятно, ошибка, если кто-то действительно не хотел эту строку a = 5, в $1. Другое, что может установить набор linux, - это опции/атрибуты оболочки. Если вы установили - вы видите список из них. И вы можете сделать, например, set -o verbose
, off, чтобы включить подробный (btw по умолчанию отключается, но это не имеет никакого значения для этого). Или вы можете сделать set +o verbose
, чтобы отключить подробный текст. У Windows нет такого использования для команды set.