Что делает "экспорт"?

Я никогда не понимаю, что делает "экспорт". Например, в чем разница между этими двумя?

  1. PYTHONPATH=/home/myaccount/ & export PYTHONPATH а также
  2. PYTHONPATH=/home/myaccount/

Один с экспортом, а другой без.

2 ответа

Решение

Если вы не экспортируете, то переменная среды будет видна только локально. Экспорт делает их доступными для других программ и оболочек, которые вы можете запустить (из этой оболочки).

"Экспорт" переменной в оболочке делает ее доступной для всех подоболочек и процессов, созданных этой оболочкой.

Он не делает его доступным везде в системе, только процессами, созданными из этой оболочки.

Вот пример, который вы можете попробовать доказать.

("set" перечислит все переменные, установленные в терминале)

   $ ZZZ=test
   $ bash # this runs bash in bash, you can also type 'xterm' to see it work there too.
   $ set |grep ZZZ # You will not see ZZZ=test
   $ exit # Lets get out of the subshell and try export!
   $ export ZZZ
   $ bash
   $ set |grep ZZZ # and there we go! our variable is set in the subshell/process.

Вы можете открыть другой терминал и увидеть, что он там не установлен.

http://ss64.com/bash/export.html

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