Ничего: существует три стандартных описания файлов, STDIN, STDOUT и STDERR. Они присвоены 0, 1, и 2 соответственно.
Что Вы видите, что существует артефакт пути ls(1)
работы: для чтения содержания /proc/self/fd
каталог и дисплей это, это должно открыть тот каталог.
Это означает, что получает дескриптор файла, обычно первое доступное... таким образом, 3.
Если необходимо было работать, скажем, cat
на отдельной консоли и осматривают /proc/${pid}/fd
для него Вы нашли бы, что только первые три были присвоены.
pam_env модуль PAM позволяет нам, Вы устанавливаете их любой в /etc/environment
или в ~/.pam_environment
В зависимости от того, хотите ли Вы это для всех пользователей (в масштабе всей системы) или просто Вашего пользователя (всей сессии).
Переменные среды в масштабе всей системы
Настройки переменной среды, которые влияют на систему в целом (скорее затем просто конкретный пользователь) не должны быть помещены ни в один из многих сценариев системного уровня, которые выполняются, когда система или настольная сессия загружаются, но в
/etc/environment
- Этот файл конкретно предназначен для настроек переменной среды в масштабе всей системы. Это не файл сценария, а скорее состоит из выражений присваивания, один на строку. А именно, это хранилища файлов локаль в масштабе всей системы и настройки пути.
Переменные среды всей сессии
Настройки переменной среды, которые должны влиять просто на конкретного пользователя (скорее затем система в целом) должны быть установлены в:
~/.pam_environment
- Этот файл конкретно предназначен для установки среды пользователя. Это не файл сценария, а скорее состоит из выражений присваивания, один на строку.Примечание: Использование
.pam_environment
требует перевхода в систему для инициализации переменных. Перезапуск просто терминала не достаточен, чтобы смочь использовать переменные.
Посмотрите больше в Wiki Ubuntu на Переменных среды.
/etc/X11/Xsession.d/
... или вроде того каталога, в зависимости от Вашего Linux (?). Я записал немного на нем здесь.
Понятие - то, что после входа в систему, менеджер по оформлению запускает "Xsession" и получает (!) все в том каталоге в алфавитном порядке. Можно просто добавить сценарий, который изменяет ПУТЬ. Xsession будет untimately быть Вашим DE, и обычно все процессы являются детьми что Xsession, поэтому наследовав среду ПУТИ.
/etc/X11/Xsession.d/40x11-common_xsessionrc
Источник глобальные переменные среды. Этот сценарий получит что-либо в $HOME/.xsessionrc, если файл будет присутствовать. Это позволяет пользователю устанавливать глобальные переменные среды для их X сессий, такие как информация о локали.
– Bananguin
04.07.2013, 11:50
Процесс наследовал среду от родительского процесса, который запускает его. Изменить ПУТЬ или другую среду оценивает в ребенке, мы можем установить переменную на значение в родителе и экспортировать переменную, если мы находимся в оболочке и затем запускаем дочерний процесс. Ребенок может также считать один или несколько файлов инициализации для изменения его собственной среды, как она запускается.
Так, существует еще два вопроса добраться до ответа:
Что родительское/дочернее наследование является деревом, которое приводит к процессу, что Вы хотите быть затронутыми ПУТЕМ или изменением среды?
Какие файлы инициализации используются/считаются/получаются соответствующими процессами в том дереве?
Вот часть вывода PS (1) для показа то, что я подразумеваю под деревом наследования:
# /bin/ps -o 'uid:5,pid:5,ppid:5,user:4,args' axf
UID PID PPID USER COMMAND
0 1 0 root /usr/lib/systemd/systemd
0 1481 1 root /usr/sbin/gdm-binary -nodaemon
0 1497 1481 root \_ /usr/libexec/gdm-simple-slave ...
0 1504 1497 root \_ /usr/bin/Xorg :0 ...
0 1855 1497 root \_ gdm-session-worker ...
Отметьте \_ графические последовательности и числа PIP/PPID (Идентификатор процесса и Родитель PID). PID 1855 был запущен (некоторый ребенок?) 1497, который был запущен к 1481, который был запущен PID 1, который был запущен предком, обрабатывают 0.
Сделайте подобную трассировку наследования для процесса, на который Вы хотите влиять, выяснить, какие файлы инициализации релевантны, и вносят изменение для СОЕДИНЕНИЯ КАНАЛОМ где-нибудь в том дереве, вероятно, с чем-то подобным:
PATH=${PATH}:/usr/local/bin
ps
определить родительский процесс входа в систему GUI?
– Code-Guru
03.07.2013, 23:20
~/.pam_environment
решение состоит в том, что по умолчанию pam_env модуль не читает его, если распределение не настраивает его иначе. На Fedora 20 это не читается, например. – Cristian Ciupitu 13.05.2014, 12:36~/.xsession
загрузит переменные среды для X приложений. Посмотрите unix.stackexchange.com/questions/47359/what-is-xsession-for – Tek 10.02.2015, 03:00user_envfile=filename
. Моя проблема с pam_env состоит в том, что ДОМАШНЯЯ переменная не может быть доступной в зависимости от приложения PAM. Который ограничивает его использование просто абсолютными переменными. – CMCDragonkai 20.09.2016, 21:45