Переменная окружения vs переменная Shell, в чем разница?

Я использую следующее, которое не связано с добавлением новых команд:

cd() {
  builtin cd "$@"
  local status=$?
  [ $status -eq 0 ] && ls
  return $status
}

Это делает работу cd той же, что и раньше, за исключением того, что есть ls.

Обратите внимание на следующие последствия. Другие примеры не позволяют аргументы cd. Хотя, по общему признанию, эти аргументы являются необычными, это замена на 100% совместимость. И поскольку он возвращает статус выхода cd, он не будет нарушать скрипты.

Здесь есть одна оговорка. Если вам когда-либо не нужна эта функциональность, вы должны вызвать builtin cd. Но мой опыт использования этой функции на протяжении многих лет заключается в том, что такие события встречаются редко, что происходит главным образом в сценариях, и удобство отсутствия необходимости вводить что-то долгое, как mycd каждый раз, когда вы хотите сменить каталоги, значительно перевешивает незначительный недостаток набора текста builtin cd один раз в синей луне.

45
задан 14 February 2011 в 17:08

55 ответов

$BASH - это локальная переменная, которая действительна только в текущей (bash) оболочке.

Локальная переменная , такая как $SHELL, действительна по всей системе. В текущей оболочке Bash $BASH указывает на путь выполнения bash, тогда как $SHELL указывает на оболочку, определенную как по умолчанию (которая может иметь одно и то же значение).

Для объяснения среды переменные см. в разделе «Переменные среды» в справке Ubuntu.

27
ответ дан 25 May 2018 в 22:59
  • 1
    Отличная ссылка (+1) :) – Peter.O 14 February 2011 в 18:42
  • 2
    Этот ответ неверен / неточен. Переменные среды НЕ являются глобальными / общесистемными. Переменные оболочки являются private в в настоящее время запущенной оболочке , и они НЕ экспортируются (передаются) на любые дочерние процессы. Переменные среды экспортируются в любые дочерние процессы. «MYVAR = частный; export OURVAR = shared; printenv & Quot; будет только сообщать «OURVAR». потому что, когда оболочка выполняет команду printenv, она экспортирует OURVAR, но не MYVAR. – C. M. 31 December 2017 в 08:10

$BASH - это локальная переменная, которая действительна только в текущей (bash) оболочке.

Локальная переменная , такая как $SHELL, действительна по всей системе. В текущей оболочке Bash $BASH указывает на путь выполнения bash, тогда как $SHELL указывает на оболочку, определенную как по умолчанию (которая может иметь одно и то же значение).

Для объяснения среды переменные см. в разделе «Переменные среды» в справке Ubuntu.

29
ответ дан 25 July 2018 в 22:29

$BASH - это локальная переменная, которая действительна только в текущей (bash) оболочке.

Локальная переменная , такая как $SHELL, действительна по всей системе. В текущей оболочке Bash $BASH указывает на путь выполнения bash, тогда как $SHELL указывает на оболочку, определенную как по умолчанию (которая может иметь одно и то же значение).

Для объяснения среды переменные см. в разделе «Переменные среды» в справке Ubuntu.

29
ответ дан 26 July 2018 в 21:53

$BASH - это локальная переменная, которая действительна только в текущей (bash) оболочке.

Локальная переменная , такая как $SHELL, действительна по всей системе. В текущей оболочке Bash $BASH указывает на путь выполнения bash, тогда как $SHELL указывает на оболочку, определенную как по умолчанию (которая может иметь одно и то же значение).

Для объяснения среды переменные см. в разделе «Переменные среды» в справке Ubuntu.

29
ответ дан 31 July 2018 в 10:29

$BASH - это локальная переменная, которая действительна только в текущей (bash) оболочке.

Локальная переменная , такая как $SHELL, действительна по всей системе. В текущей оболочке Bash $BASH указывает на путь выполнения bash, тогда как $SHELL указывает на оболочку, определенную как по умолчанию (которая может иметь одно и то же значение).

Для объяснения среды переменные см. в разделе «Переменные среды» в справке Ubuntu.

29
ответ дан 31 July 2018 в 11:30

$BASH - это локальная переменная, которая действительна только в текущей (bash) оболочке.

Локальная переменная , такая как $SHELL, действительна по всей системе. В текущей оболочке Bash $BASH указывает на путь выполнения bash, тогда как $SHELL указывает на оболочку, определенную как по умолчанию (которая может иметь одно и то же значение).

Для объяснения среды переменные см. в разделе «Переменные среды» в справке Ubuntu.

29
ответ дан 2 August 2018 в 03:55

$ BASH - это локальная переменная, которая действительна только в текущей (bash) оболочке.

Действительны переменные окружения, такие как $ SHELL общесистемный. В текущей оболочке Bash $ BASH указывает на путь выполнения bash, тогда как $ SHELL указывает на оболочку, определенную как по умолчанию (которая может иметь одно значение).

Для объяснения переменных среды см. Переменные среды в справке Ubuntu.

29
ответ дан 4 August 2018 в 19:58

$ BASH - это локальная переменная, которая действительна только в текущей (bash) оболочке.

Действительны переменные окружения, такие как $ SHELL общесистемный. В текущей оболочке Bash $ BASH указывает на путь выполнения bash, тогда как $ SHELL указывает на оболочку, определенную как по умолчанию (которая может иметь одно значение).

Для объяснения переменных среды см. Переменные среды в справке Ubuntu.

29
ответ дан 6 August 2018 в 04:01

$ BASH - это локальная переменная, которая действительна только в текущей (bash) оболочке.

Действительны переменные окружения, такие как $ SHELL общесистемный. В текущей оболочке Bash $ BASH указывает на путь выполнения bash, тогда как $ SHELL указывает на оболочку, определенную как по умолчанию (которая может иметь одно значение).

Для объяснения переменных среды см. Переменные среды в справке Ubuntu.

29
ответ дан 7 August 2018 в 21:59

$ BASH - это локальная переменная, которая действительна только в текущей (bash) оболочке.

Действительны переменные окружения, такие как $ SHELL общесистемный. В текущей оболочке Bash $ BASH указывает на путь выполнения bash, тогда как $ SHELL указывает на оболочку, определенную как по умолчанию (которая может иметь одно значение).

Для объяснения переменных среды см. Переменные среды в справке Ubuntu.

29
ответ дан 10 August 2018 в 10:13

$ BASH - это локальная переменная, которая действительна только в текущей (bash) оболочке.

Действительны переменные окружения, такие как $ SHELL общесистемный. В текущей оболочке Bash $ BASH указывает на путь выполнения bash, тогда как $ SHELL указывает на оболочку, определенную как по умолчанию (которая может иметь одно значение).

Для объяснения переменных среды см. Переменные среды в справке Ubuntu.

29
ответ дан 13 August 2018 в 16:36
  • 1
    Отличная ссылка (+1) :) – Peter.O 14 February 2011 в 18:42
  • 2
    Этот ответ неверен / неточен. Переменные среды НЕ являются глобальными / общесистемными. Переменные оболочки private относятся к текущей запущенной оболочке, и они НЕ экспортируются (передаются) на любые дочерние процессы. Переменные среды экспортируются в любые дочерние процессы. «MYVAR = частный; export OURVAR = shared; printenv & Quot; будет только сообщать «OURVAR». потому что, когда оболочка выполняет команду printenv, она экспортирует OURVAR, но не MYVAR. – C. M. 31 December 2017 в 08:10

Переменная окружения является глобально доступной, в программе и дочерних программах. Переменная оболочки доступна только в текущей оболочке. Чтобы сделать переменную оболочки доступной как переменную среды, используйте export VARNAME (без доллара $).

Примеры для пояснения:

$ SOME=VAR # define shell variable $SOME
$ echo $SOME
VAR
$ env | grep SOME # note: no output
$ export SOME # turn $SOME into an environment variable
$ env | grep SOME
SOME=VAR

Другой способ определения среды переменная:

$ export ANOTHER=VALUE
$ echo $ANOTHER
VALUE
$ env | grep ANOTHER
ANOTHER=VALUE
33
ответ дан 25 May 2018 в 22:59
  • 1
    Я не думаю, что это правильно. export не обязательно устанавливает переменную среды. stackoverflow.com/questions/7411455/&hellip – Chris Stryczynski 17 November 2017 в 21:41
  • 2
    @ChrisStryczynski export устанавливает переменную среды для дочерних процессов. Сообщение, которое вы связываете, не противоречит этому ответу, не могли бы вы объяснить, почему вы считаете, что это неправильно? – Lekensteyn 20 November 2017 в 03:12

Есть разница. Переменные оболочки и переменные среды объясняют это лучше, чем я могу, но вот отрывок из нее:

Если в переменную оболочки было внесено изменение, она должна быть явно «экспортирована» в соответствующую переменную среды для того, чтобы любые разветвленные подпроцессы увидели изменение. Напомним, что переменные оболочки являются локальными для оболочки, в которой они были определены.
7
ответ дан 25 May 2018 в 22:59
  • 1
    Я комментирую свой собственный ответ. Мне очень нравится ссылка Help Ubuntu в ответе Таккат ... (это лучше, чем мое) – Peter.O 14 February 2011 в 18:46
  • 2
    Плюс ваша ссылка больше не работает! – Dr Eval 19 September 2017 в 18:19

Shell Variable: Short Term, применяется только к текущему экземпляру оболочки, не применимо к системе

Экологическая переменная: долгосрочное использование, допустимая системная ширина, разрешено во всем мире

By условные переменные Shell Variable имеют свое имя в нижнем регистре, а Envn. Переменные записываются как прописные буквы

2
ответ дан 25 May 2018 в 22:59

Чтобы ответить на этот вопрос, сначала попробуйте понять область действия переменной.

Когда вы создаете новую переменную типа SOME_ENV_VARIABLE="testing.txt", она находится в SHELL scope, это означает, что к ней можно получить доступ к этому экземпляру оболочки, в которой пользователь вошел в систему. Когда экземпляр меняет, например, вы открываете новый терминал или вы меняете оболочку (например, вы переключаетесь на csh), вы не можете получить доступ к этой переменной.

Когда вы экспортируете такую ​​переменную, как export SOME_ENV_VARIABLE, эта переменная теперь доступна в области среды, что означает , что экземпляр оболочки , если вы меняете оболочку, вы все равно можете получить доступ к этой переменной. Давайте попробуем разобраться со следующим примером:

[vishrant@localhost]$ SOME_ENV_VARIABLE="testing.txt" #creating variable in bash shell
[vishrant@localhost]$ echo $SOME_ENV_VARIABLE
testing.txt
[vishrant@localhost]$ export SOME_ENV_VARIABLE #variable now available with environment
[vishrant@localhost]$ env | grep SOME_ENV_VARIABLE
SOME_ENV_VARIABLE=testing.txt
[vishrant@localhost]$ csh #changing shell
[vishrant@localhost ~/shell_scripting]$ echo $SOME_ENV_VARIABLE
testing.txt
[vishrant@localhost ~/shell_scripting]$ exit
exit #returned to parent shell
[vishrant@localhost]$ SOME_SHELL_VARIABLE="hello.txt"
[vishrant@localhost]$ csh
[vishrant@localhost ~/shell_scripting]$ echo $SOME_SHELL_VARIABLE
SOME_SHELL_VARIABLE: Undefined variable.

Аналогия: предположим, у вас есть квартира с двумя спальнями, и вы делитесь ею с другим соседом по комнате. С общей зоной можно связаться кто угодно, но не ваши спальни, переменная окружения подобна общей области, а переменная оболочки похожа на спальню, если вы будете что-то в общей области, к которой может обратиться любой, но если вы храните ее в своей спальне, она может

Помните, если открыть новый терминал, вы не сможете получить доступ к какой-либо из переменных, потому что вы меняете Analogy: . Для этого вы должны добавить свои переменные в .profile или .bashrc (если вы используете bash).

0
ответ дан 25 May 2018 в 22:59

Shell Variable: Short Term, применяется только к текущему экземпляру оболочки, не применимо к системе

Экологическая переменная: долгосрочное использование, допустимая системная ширина, разрешено во всем мире

By условные переменные Shell Variable имеют свое имя в нижнем регистре, а Envn. Переменные записываются как прописные буквы

2
ответ дан 25 July 2018 в 22:29

Есть разница. Переменные оболочки и переменные среды объясняют это лучше, чем я могу, но вот отрывок из нее:

Если в переменную оболочки было внесено изменение, она должна быть явно «экспортирована» в соответствующую переменную среды для того, чтобы любые разветвленные подпроцессы увидели изменение. Напомним, что переменные оболочки являются локальными для оболочки, в которой они были определены.
7
ответ дан 25 July 2018 в 22:29
  • 1
    Я комментирую свой собственный ответ. Мне очень нравится ссылка Help Ubuntu в ответе Таккат ... (это лучше, чем мое) – Peter.O 14 February 2011 в 18:46

Переменная окружения является глобально доступной, в программе и дочерних программах. Переменная оболочки доступна только в текущей оболочке. Чтобы сделать переменную оболочки доступной как переменную среды, используйте export VARNAME (без доллара $).

Примеры для пояснения:

$ SOME=VAR # define shell variable $SOME $ echo $SOME VAR $ env | grep SOME # note: no output $ export SOME # turn $SOME into an environment variable $ env | grep SOME SOME=VAR

Другой способ определения среды переменная:

$ export ANOTHER=VALUE $ echo $ANOTHER VALUE $ env | grep ANOTHER ANOTHER=VALUE
34
ответ дан 25 July 2018 в 22:29
  • 1
    @ChrisStryczynski export устанавливает переменную среды для дочерних процессов. Сообщение, которое вы связываете, не противоречит этому ответу, не могли бы вы объяснить, почему вы считаете, что это неправильно? – Lekensteyn 20 November 2017 в 03:12

Чтобы ответить на этот вопрос, сначала попробуйте понять область действия переменной.

Когда вы создаете новую переменную типа SOME_ENV_VARIABLE="testing.txt", она находится в SHELL scope, это означает, что к ней можно получить доступ к этому экземпляру оболочки, в которой пользователь вошел в систему. Когда экземпляр меняет, например, вы открываете новый терминал или вы меняете оболочку (например, вы переключаетесь на csh), вы не можете получить доступ к этой переменной.

Когда вы экспортируете такую ​​переменную, как export SOME_ENV_VARIABLE, эта переменная теперь доступна в области среды, что означает , что экземпляр оболочки , если вы меняете оболочку, вы все равно можете получить доступ к этой переменной. Давайте попробуем разобраться со следующим примером:

[vishrant@localhost]$ SOME_ENV_VARIABLE="testing.txt" #creating variable in bash shell [vishrant@localhost]$ echo $SOME_ENV_VARIABLE testing.txt [vishrant@localhost]$ export SOME_ENV_VARIABLE #variable now available with environment [vishrant@localhost]$ env | grep SOME_ENV_VARIABLE SOME_ENV_VARIABLE=testing.txt [vishrant@localhost]$ csh #changing shell [vishrant@localhost ~/shell_scripting]$ echo $SOME_ENV_VARIABLE testing.txt [vishrant@localhost ~/shell_scripting]$ exit exit #returned to parent shell [vishrant@localhost]$ SOME_SHELL_VARIABLE="hello.txt" [vishrant@localhost]$ csh [vishrant@localhost ~/shell_scripting]$ echo $SOME_SHELL_VARIABLE SOME_SHELL_VARIABLE: Undefined variable.

Аналогия: предположим, у вас есть квартира с двумя спальнями, и вы делитесь ею с другим соседом по комнате. С общей зоной можно связаться кто угодно, но не ваши спальни, переменная окружения подобна общей области, а переменная оболочки похожа на спальню, если вы будете что-то в общей области, к которой может обратиться любой, но если вы храните ее в своей спальне, она может

Помните, если открыть новый терминал, вы не сможете получить доступ к какой-либо из переменных, потому что вы меняете Analogy: . Для этого вы должны добавить свои переменные в .profile или .bashrc (если вы используете bash).

0
ответ дан 25 July 2018 в 22:29

Есть разница. Переменные оболочки и переменные среды объясняют это лучше, чем я могу, но вот отрывок из нее:

Если в переменную оболочки было внесено изменение, она должна быть явно «экспортирована» в соответствующую переменную среды для того, чтобы любые разветвленные подпроцессы увидели изменение. Напомним, что переменные оболочки являются локальными для оболочки, в которой они были определены.
7
ответ дан 26 July 2018 в 21:53
  • 1
    Я комментирую свой собственный ответ. Мне очень нравится ссылка Help Ubuntu в ответе Таккат ... (это лучше, чем мое) – Peter.O 14 February 2011 в 18:46

Shell Variable: Short Term, применяется только к текущему экземпляру оболочки, не применимо к системе

Экологическая переменная: долгосрочное использование, допустимая системная ширина, разрешено во всем мире

By условные переменные Shell Variable имеют свое имя в нижнем регистре, а Envn. Переменные записываются как прописные буквы

2
ответ дан 26 July 2018 в 21:53

Переменная окружения является глобально доступной, в программе и дочерних программах. Переменная оболочки доступна только в текущей оболочке. Чтобы сделать переменную оболочки доступной как переменную среды, используйте export VARNAME (без доллара $).

Примеры для пояснения:

$ SOME=VAR # define shell variable $SOME $ echo $SOME VAR $ env | grep SOME # note: no output $ export SOME # turn $SOME into an environment variable $ env | grep SOME SOME=VAR

Другой способ определения среды переменная:

$ export ANOTHER=VALUE $ echo $ANOTHER VALUE $ env | grep ANOTHER ANOTHER=VALUE
34
ответ дан 26 July 2018 в 21:53
  • 1
    @ChrisStryczynski export устанавливает переменную среды для дочерних процессов. Сообщение, которое вы связываете, не противоречит этому ответу, не могли бы вы объяснить, почему вы считаете, что это неправильно? – Lekensteyn 20 November 2017 в 03:12

Чтобы ответить на этот вопрос, сначала попробуйте понять область действия переменной.

Когда вы создаете новую переменную типа SOME_ENV_VARIABLE="testing.txt", она находится в SHELL scope, это означает, что к ней можно получить доступ к этому экземпляру оболочки, в которой пользователь вошел в систему. Когда экземпляр меняет, например, вы открываете новый терминал или вы меняете оболочку (например, вы переключаетесь на csh), вы не можете получить доступ к этой переменной.

Когда вы экспортируете такую ​​переменную, как export SOME_ENV_VARIABLE, эта переменная теперь доступна в области среды, что означает , что экземпляр оболочки , если вы меняете оболочку, вы все равно можете получить доступ к этой переменной. Давайте попробуем разобраться со следующим примером:

[vishrant@localhost]$ SOME_ENV_VARIABLE="testing.txt" #creating variable in bash shell [vishrant@localhost]$ echo $SOME_ENV_VARIABLE testing.txt [vishrant@localhost]$ export SOME_ENV_VARIABLE #variable now available with environment [vishrant@localhost]$ env | grep SOME_ENV_VARIABLE SOME_ENV_VARIABLE=testing.txt [vishrant@localhost]$ csh #changing shell [vishrant@localhost ~/shell_scripting]$ echo $SOME_ENV_VARIABLE testing.txt [vishrant@localhost ~/shell_scripting]$ exit exit #returned to parent shell [vishrant@localhost]$ SOME_SHELL_VARIABLE="hello.txt" [vishrant@localhost]$ csh [vishrant@localhost ~/shell_scripting]$ echo $SOME_SHELL_VARIABLE SOME_SHELL_VARIABLE: Undefined variable.

Аналогия: предположим, у вас есть квартира с двумя спальнями, и вы делитесь ею с другим соседом по комнате. С общей зоной можно связаться кто угодно, но не ваши спальни, переменная окружения подобна общей области, а переменная оболочки похожа на спальню, если вы будете что-то в общей области, к которой может обратиться любой, но если вы храните ее в своей спальне, она может

Помните, если открыть новый терминал, вы не сможете получить доступ к какой-либо из переменных, потому что вы меняете Analogy: . Для этого вы должны добавить свои переменные в .profile или .bashrc (если вы используете bash).

0
ответ дан 26 July 2018 в 21:53

Чтобы ответить на этот вопрос, сначала попробуйте понять область видимости переменной.

Когда вы создаете новую переменную типа SOME_ENV_VARIABLE = "testing.txt" , она находится в папке SHELL scope , это означает, что к нему можно получить доступ к этому экземпляру оболочки, где пользователь вошел в систему. Когда экземпляр меняет, например, вы открываете новый терминал или вы меняете оболочку (например, вы переключаетесь на ] csh ), вы не можете получить доступ к этой переменной.

Когда вы экспортируете такую ​​переменную, как , экспортируйте SOME_ENV_VARIABLE , эта переменная теперь доступна в области среды, что означает в этом случае если вы измените оболочку, вы можете по-прежнему получить доступ к этой переменной. Давайте попробуем разобраться со следующим примером:

  [vishrant @ localhost] $ SOME_ENV_VARIABLE = "testing.txt" #creating переменная в оболочке bash [vishrant @ localhost] $ echo $ SOME_ENV_VARIABLE test.txt [  vishrant @ localhost] $ export SOME_ENV_VARIABLE #variable теперь доступен с помощью среды [vishrant @ localhost] $ env |  grep SOME_ENV_VARIABLE SOME_ENV_VARIABLE = test.txt [vishrant @ localhost] $ csh #changing shell [vishrant @ localhost ~ / shell_scripting] $ echo $ SOME_ENV_VARIABLE test.txt [vishrant @ localhost ~ / shell_scripting] $ exit exit # возвращено к исходной оболочке [vishrant  @localhost] $ SOME_SHELL_VARIABLE = "hello.txt" [vishrant @ localhost] $ csh [vishrant @ localhost ~ / shell_scripting] $ echo $ SOME_SHELL_VARIABLE SOME_SHELL_VARIABLE: Неопределенная переменная.   

Аналогия: предположим, у вас есть квартира с двумя спальнями, и вы делитесь ею с другим соседом по комнате. С общей зоной можно связаться кто угодно, но не ваши спальни, переменная окружения подобна общей области, а переменная оболочки похожа на спальню, если вы будете что-то в общей области, к которой может обратиться любой, но если вы храните ее в своей спальне, она может доступ к вам.

Помните, если открыть новый терминал, вы не сможете получить доступ к любой из переменных, потому что вы меняете этот экземпляр. Для этого вы должны добавить свои переменные в файл .profile или .bashrc (если вы используете bash).

0
ответ дан 31 July 2018 в 10:29

Есть разница. Переменные оболочки и переменные среды объясняют это лучше, чем я могу, но вот отрывок из нее:

Если в переменную оболочки было внесено изменение, она должна быть явно «экспортирована» в соответствующую переменную среды для того, чтобы любые разветвленные подпроцессы увидели изменение. Напомним, что переменные оболочки являются локальными для оболочки, в которой они были определены.
7
ответ дан 31 July 2018 в 10:29
  • 1
    Я комментирую свой собственный ответ. Мне очень нравится ссылка Help Ubuntu в ответе Таккат ... (это лучше, чем мое) – Peter.O 14 February 2011 в 18:46

Переменная окружения является глобально доступной, в программе и дочерних программах. Переменная оболочки доступна только в текущей оболочке. Чтобы сделать переменную оболочки доступной как переменную среды, используйте export VARNAME (без доллара $).

Примеры для пояснения:

$ SOME=VAR # define shell variable $SOME $ echo $SOME VAR $ env | grep SOME # note: no output $ export SOME # turn $SOME into an environment variable $ env | grep SOME SOME=VAR

Другой способ определения среды переменная:

$ export ANOTHER=VALUE $ echo $ANOTHER VALUE $ env | grep ANOTHER ANOTHER=VALUE
34
ответ дан 31 July 2018 в 10:29
  • 1
    Я не думаю, что это правильно. export не обязательно устанавливает переменную среды. [D0] stackoverflow.com/questions/7411455/&hellip – Chris Stryczynski 17 November 2017 в 21:41

Shell Variable: Short Term, применяется только к текущему экземпляру оболочки, не применимо к системе

Экологическая переменная: долгосрочное использование, допустимая системная ширина, разрешено во всем мире

By условные переменные Shell Variable имеют свое имя в нижнем регистре, а Envn. Переменные записываются как прописные буквы

2
ответ дан 31 July 2018 в 10:29

Shell Variable: Short Term, применяется только к текущему экземпляру оболочки, не применимо к системе

Экологическая переменная: долгосрочное использование, допустимая системная ширина, разрешено во всем мире

By условные переменные Shell Variable имеют свое имя в нижнем регистре, а Envn. Переменные записываются как прописные буквы

2
ответ дан 31 July 2018 в 11:30

Есть разница. Переменные оболочки и переменные среды объясняют это лучше, чем я могу, но вот отрывок из нее:

Если в переменную оболочки было внесено изменение, она должна быть явно «экспортирована» в соответствующую переменную среды для того, чтобы любые разветвленные подпроцессы увидели изменение. Напомним, что переменные оболочки являются локальными для оболочки, в которой они были определены.
7
ответ дан 31 July 2018 в 11:30
  • 1
    Я комментирую свой собственный ответ. Мне очень нравится ссылка Help Ubuntu в ответе Таккат ... (это лучше, чем мое) – Peter.O 14 February 2011 в 18:46
  • 2
    Плюс ваша ссылка больше не работает! – user 19 September 2017 в 18:19

Переменная окружения является глобально доступной, в программе и дочерних программах. Переменная оболочки доступна только в текущей оболочке. Чтобы сделать переменную оболочки доступной как переменную среды, используйте export VARNAME (без доллара $).

Примеры для пояснения:

$ SOME=VAR # define shell variable $SOME $ echo $SOME VAR $ env | grep SOME # note: no output $ export SOME # turn $SOME into an environment variable $ env | grep SOME SOME=VAR

Другой способ определения среды переменная:

$ export ANOTHER=VALUE $ echo $ANOTHER VALUE $ env | grep ANOTHER ANOTHER=VALUE
34
ответ дан 31 July 2018 в 11:30
  • 1
    Я не думаю, что это правильно. export не обязательно устанавливает переменную среды. [D0] stackoverflow.com/questions/7411455/&hellip – Chris Stryczynski 17 November 2017 в 21:41
  • 2
    @ChrisStryczynski export устанавливает переменную среды для дочерних процессов. Сообщение, которое вы связываете, не противоречит этому ответу, не могли бы вы объяснить, почему вы считаете, что это неправильно? – Lekensteyn 20 November 2017 в 03:12

Другие вопросы по тегам:

Похожие вопросы: