Як я можу перерахувати всі змінні оболонки?


18

Читаючи про це питання: У zsh як я можу перерахувати всі змінні середовища? , Я задумався, як я можу перерахувати всі змінні оболонки ?

Також, чи застосовується відмінність між змінними оболонки та змінними середовища для оболонок, крім zsh?

Мене в першу чергу цікавлять Баш і Зш, але було б чудово знати, як це зробити в інших оболонках мейнстріму.

Відповіді:


21

Список усіх змінних оболонок

bash: використання set -o posix ; set. Параметри POSIX є, щоб уникнути надмірної кількості інформації, як, наприклад, визначення функцій. declare -pтакож працює.

zsh : використання typeset

Змінні оболонки та змінні середовища

Змінна середовище доступна exec()дочірнім процесам -eded (як копія. Якщо батьківський процес змінює змінну, дочірнє середовище не оновлюється). Змінна, яка не є середовищем, доступна лише для поточних запущених оболонок і fork()-ed підпакетів. Ця відмінність присутня у всіх оболонках.

(завершено завдяки коментарям)


declare -pзробіть те саме
Костас

На запитання також є відповідь тут: stackoverflow.com/questions/1305237/…
Uriel

1
set -o posixне існує в zsh; setне виводить визначення функцій.
vinc17

1
set -o posixє синтаксичною помилкою в більшості оболонок.
mikeserv

3
Змінні оболонки також доступні в дочірніх процесах. Різниця виникає, коли дочірній процес виконує нову програму: змінні середовища передаються разом exec, змінні оболонки - ні.
Бармар

7

Є багато альтернатив:

принтень

Роздрукуйте значення вказаного середовища VARIABLE (s). Якщо VARIABLE не вказано, надрукуйте для них усі імена та значення значень.

оточення

env - запуск програми в модифікованому середовищі

експорт

Встановити змінну середовища. Позначте кожне ім’я, яке потрібно передавати дочірнім процесам у навколишньому середовищі .....

-p Відображення виводу у формі, яка може бути повторно використана як введення.

Якщо імена не надано, або якщо вказано опцію `-p ', відобразиться список експортованих імен.

набір

корисно також отримати змінні оболонки.

Якщо вам потрібна додаткова інформація (ціла, експортована), вам слід скористатися нею

набір тексту

Експорт має перевагу в тому, що його вихід може бути негайно прочитаний назад на оболонку.

Нарешті, є

compgen -v

Відображення можливих завершень залежно від параметрів.

який показує всі змінні, оболонку та середовище, без їх значення та додаткової інформації. Вам доведеться відлунювати $ VARIABLE_NAME, щоб знайти значення змінної. Але принаймні список повний. Належить до bash , а не zsh .


1
exportне має переваги перед setпринаймні, коли йдеться про цитування повторного введення оболонки. А printenvта envзовсім не про підставних змінних, хоча вони роблять часто збігаються зі змінними оточення.
mikeserv

3

З zsh, ви можете використовувати typeset, що дає більше інформації, ніж set, наприклад, тип змінних. Ви все ще можете фільтрувати вихід за допомогою grepабо sed, залежно від того, що ви хочете. Змінні середовища позначаються як exportedу висновку.

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.