Я установил некоторые переменные окружения следующим образом:
MY_VAR='helloworld'
export MY_VAR
Затем я переключился на другого пользователя через
su SOME_OTHER_USER
Я повторяю переменную MY_VAR .. и вижу ее значение!
1) Не могли бы вы объяснить эту проблему. Насколько я понимаю, когда я экспортирую переменную с помощью команды экспорта, это не "глобальный" экспорт, а просто локальная переменная пользователя. Почему я это вижу?
2) Первоначально у меня было предположение: может быть, когда я переключаюсь на другого пользователя, я запускаю некоторый дочерний процесс моего bash-процесса, и поэтому я вижу свою переменную, потому что экспортированные переменные передаются любому дочернему процессу текущей оболочки. Но команда ps ---pid <my bash's pid which I got with echo $$>
показывает только тот же pid в выводе. Похоже, это означает, что нет никаких дочерних процессов, связанных с моим процессом bash, и su не запускает какой-либо процесс. Я прав?
(кстати, я не вижу ни одного «потомка» таким образом, даже если я запускаю другой bash с помощью команды bash, я не знаю почему)
3) Наконец, кто может видеть переменную, которую я экспортировал таким образом? Учитывая, что я запускаю какой-то другой процесс из моего графического интерфейса ОС - я собираюсь его увидеть? Похоже, нет, потому что, если я запускаю другой терминал, я не вижу его там. Так какова область действия и время жизни моей экспортируемой переменной?
Я использую Debian Wheezy. Я запускал команду из RootTerminal под пользователем Root.