Перечисление переменных среды для конкретного SHELL

То же самое здесь ... но с ядром запаса

$ uname -a
Linux prato 3.13.0-30-generic #55-Ubuntu SMP Fri Jul 4 21:40:53 UTC 2014 x86_64 x86_64 x86_64 GNU/Linux

$ modinfo iwlwifi | grep 7260
firmware:       iwlwifi-7260-7.ucode

Но будет загружаться, только если я загружу и установлю 7260-8 из http://wireless.kernel.org/en/users/Drivers / iwlwifi

Возможно, кто-то забыл что-то изменить в информации о драйвере. У моей установки были -7 и -9, как ни странно.

К счастью, он работает с -8 даже в режиме монитора.

Надеюсь, что это поможет!

1
задан 23 January 2017 в 19:57

2 ответа

Окружающая среда настроена на процесс, а не на TTY. 1 tty может одновременно иметь несколько оболочек, поэтому может иметь разные наборы переменных.

Так что сделайте

ps -ef |grep pts/4

и обратите внимание на processid оболочки, которую вы хотите исследовать , Затем посмотрите ...

more /proc/{processid}/environ

Подробнее об этом см. [F3].

1
ответ дан 23 May 2018 в 02:09

Может существовать любой (способный) процесс, прикрепленный к терминалу, не обязательно оболочка. Но оболочка типична, и, конечно, может быть задействовано несколько оболочек - представьте, что оболочка порождает другую и т. Д.

Ядро Linux предоставляет часть своей внутренней структуры данных через псевдо FS, [F2]; установлен на /proc (по умолчанию). Окружающая среда процесса обычно отображается через файл /proc/PID/environ.

Итак, вы можете получить процесс (ы), который подключен к определенному терминалу, а затем прочитать файл /proc/PID/environ, чтобы получить процесс Окружающая среда. Также в файле значения переменных показаны как пара KEY=VALUE, а переменные отделены друг от друга с помощью ASCII NUL, поэтому вам нужно обрабатывать это также для удобства чтения.

Получение PID всех процессов прикрепленный к нужному терминалу и используя awk, чтобы прочитать соответствующий файл окружения, и получить переменные в форме, разделенной новой строкой:

ps -eo pid,tty | awk -v tty='pts/4' '$2 ~ tty {"cat /proc/"$1"/environ" \
             | getline i; gsub("\\0", "\n", i); printf "PID=%s\n%s\n\n",$1, i}'

Использовать имя конечного терминала на переменной tty, переданной в awk , здесь я использовал pts/4, как вы упомянули в вопросе. Выход будет также содержать строку PID=<pid> в начале, только для ясности и удобочитаемости.

1
ответ дан 23 May 2018 в 02:09

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

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