Переменная path среды: …что такое переменная среды PATH? • А хотите, я расскажу вам…

Переменные окружения в Linux — ИТ Проффи

В системах Linux для хранения и использования некоторых настроек и параметров используются специализированные контейнеры данных — переменные окружения. Они представляют собой именованные переменные, в которых хранится текстовое значение. В качестве значения могут использоваться пути, имена команд, файлов и. т. д. Переменные окружения можно редактировать, т. е. изменять их значения, удалять или создавать новые. Переменными окружения пользуются как система, так и программы, скрипты или демоны для своей работы.

Содержание

  1. Зачем нужны переменные окружения?
  2. Получение информации о переменных окружения
  3. Виды переменных окружения
  4. Системные переменные
  5. Пользовательские переменные
  6. Временные или переменные сеанса
  7. Установка переменных окружения

Зачем нужны переменные окружения?

Если коротко, то они необходимы для организации различного рода окружений: системных, пользовательских, сеансовых, т.  е. для хранения настроек соответствующих сред внутри системы. К примеру, программы для своей работы используют библиотечные функции, являющиеся одним из важнейших системных ресурсов. Или, например, интерпретатор команд способен находить соответствующие командам исполняемые файлы без необходимости каждый раз указывать соответствующие пути.

Но как программы «узнают», где можно найти те или иные ресурсы? Из переменных окружения. Таким же образом происходит запуск и исполнение команд в командной консоли, т. к. благодаря переменной окружения PATH интерпретатор bash (или любая другая командная оболочка) находит программу (исполняемый файл или библиотеку) по указанному в PATH пути. И таким же образом, к примеру, команда man «знает», что запрашиваемые страницы справочных руководств нужно искать согласно значению переменной окружения MANPATH.

В работе, тесно связанной с системным администрированием довольно часто приходится сталкиваться с такими ситуациями, когда необходимо узнать значения некоторых переменных окружения или же вывести список полный список таковых. Для этой цели существует несколько специализированных утилит. В подавляющем большинстве случаев соответствующие пакеты уже предустановлены в системе. Самыми распространёнными из таких утилит являются printenv, env, а также export. Так, например, для того, чтобы вывести список действующих переменных окружения нужно дать следующую команду:

$ printenv
GS_LIB=/home/john/.fonts
KDE_FULL_SESSION=true
LANG=ru_RU.UTF-8
DISPLAY=:0
OLDPWD=/home/john/builds/wxwidgets
PWD=/home/john
HOME=/home/john
. . .
SHELL=/bin/bash
PATH=/opt/wxwidgets/bin:/home/john/.config/composer/vendor/bin:/usr/bin

В данном выводе представлен сильно сокращённый список переменных окружения для Kubuntu 18.04. Также следует заметить, что представленный список относится к пользовательскому набору, доступному текущему пользователю. Если выполнить команду printenv от имени суперпользователя (root), то набор переменных будет несколько отличаться.

Как следует из вышеприведённого вывода, для пользователя john используется русская локализация для сеанса (LANG), в качестве командного интерпретатора по-умолчанию используется bash (SHELL), текущим активным каталогом является /home/john (PWD), а переменная PATH модифицирована и содержит в себе (кроме дефолтного /usr/bin) значения /opt/wxwidgets/bin и /home/john/. config/composer/vendor/bin. Значение каждой переменной окружения представляет собой, как можно видеть, набор параметров, разделённых двоеточиями.

Тот же список можно вывести, если дать команду env. Также можно использовать команду export с ключом -p:

$ export -p

Для вывода значения конкретной переменной:

$ echo $PATH

или:

$ printenv | grep PATH

В последнем случае будет выведены все переменные, содержащие фразу «PATH».

Виды переменных окружения

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

Ниже приведены некоторые наиболее часто используемые переменные окружения:

ИмяОписание
HOMEОпределяет путь к домашнему каталогу текущего пользователя
PWDОпределяет текущий активный каталог
OLDPWDПредыдущий активный каталог
SHELLОпределяет программу-командную оболочку
TERMСодержит имя текущей запущенной программы-терминала
PAGERОпределяет программу для постраничного вывода страниц справочных руководств
EDITORОпределяет программу для редактирования текстовых файлов
VISUALОпределяет программу для редактирования текстовых файлов с расширенными возможностями (vim, emacs)
MAILОпределяет путь к каталогу, в котором должны храниться файлы входящей электронной почты.
BROWSERОпределяет веб-браузер, запускаемый по-умолчанию
ftp_proxy

http_proxy

Определяют, соответственно адреса для прокси-серверов по FTP и HTTP протоколам
MANPATHОпределяет каталог, в котором содержатся подкаталоги, содержащие man-страницы справочных руководств системной справки для команды man
INFODIRОпределяет список каталогов для поиска info-страниц для команды info
TZОпределяет временную зону. Доступные временные зоны хранятся в /usr/share/zoneinfo

Системные переменные

Согласно стандартам Linux переменные окружения для организации системной среды хранятся в нескольких файлах:

  • /etc/bash.bashrc – хранение переменных для командных оболочек;
  • /etc/profile – хранение переменных для интерактивных оболочек;
  • /etc/environment – переменные из этого файла используются модулем

Конечно, подобное разделение для хранения переменных окружения сделано разработчиками не просто так и эти стандарты необходимо соблюдать, чтобы не замусорить систему бесполезной конфигурацией, вносящей путаницу, т.  е. нужно внимательно выбирать нужный файл в зависимости от конкретной задачи и ситуации.

Пользовательские переменные

Для систем, ориентированных на многопользовательский доступ, например на хостинговых площадках, конкретному пользователю полезно иметь возможность гибко настраивать своё собственное рабочее окружение, создавая новые переменные или дополняя их новыми значениями. К примеру, владельцу сайта, для его виртуального хоста, обслуживающего сайт на CMS Drupal, захотелось установить утилиту drush, которая облегчает и ускоряет обслуживание CMS. В этом случае достаточно после локальной установки (в каком-нибудь подкаталоге домашнего каталога) drush, дополнить переменную PATH значением, содержащим путь к утилите drush в файле ~/.bashrc. В результате командная оболочка сможет запускать команду drush для данного пользователя.

По стандартам соглашений для Linux-систем конфигурация для пользовательского окружения должна храниться в следующих файлах:

  • ~/.bashrc – для хранения параметров инициализации выбранной командной оболочки для пользователя;
  • ~/. profile – для инициализации доступных пользователю командных оболочек;
  • ~/.pam_environment – для использования модулем

Временные или переменные сеанса

Переменные окружения также можно устанавливать временно. Это значит, что переменная будет действовать только во время действия текущего сеанса пользователя. В таких случаях удобно иметь определённый скрипт, содержащий код с необходимыми переменными, который можно в любое время запускать командой:

$ source файл_скрипта

Или же устанавливать их вручную командой export.

Установка переменных окружения

Чтобы установить временную (для сеанса) переменную окружения достаточно выполнить команду со следующим синтаксисом:

ИМЯ=’значение’

Например:

$ SOMEVAR=’somevalue’
$ echo $SOMEVAR
somevalue

Если нужно временно модифицировать переменную PATH, то можно выполнить export:

$ export PATH="${PATH}:/home/john/tmp/usr/bin"

Для того, чтобы удалить временную переменную можно воспользоваться командой unset:

$ unset SOMEVAR

Для установки системных или пользовательских переменных окружения следует помещать код с нужными переменными в соответствующие файлы инициализации окружения. Например, чтобы добавить на системном уровне какой-либо пользовательский каталог (пусть это будет ~/bin), нужно один из файлов (/etc/profile  или /etc/bash.bashrc) дополнить следующим кодом:

export PATH=”$HOME/bin:$PATH”

В случае, если нужно выполнить то же самое для пользовательского уровня переменных окружения, то редактировать нужно файл (для локального входа) ~/.bashrc (для удалённого входа, например по SSH –  ~/.bash_profile):

export PATH=”$HOME/.config/composer/vendor/bin:$PATH”

Этот код включит использование командным интерпретатором вышеупомянутой команды drush (предварительно установленной по указанному пути, конечно) для CMS Drupal.

Чтобы можно было видеть сделанные изменения, нужно их зафиксировать:

$ source ~/.bashrc

Если вы нашли ошибку, пожалуйста, выделите фрагмент текста и нажмите Ctrl+Enter.

Как установить или изменить переменную среды $PATH в Linux

path global .bashrc profile

В Linux (также UNIX) $PATH — это переменная среды, используемая для указания оболочке, где искать исполняемые файлы. $PATH обеспечивает большую гибкость и безопасность для систем Linux, и, безусловно, можно сказать, что это одна из самых важных переменных среды.

Программы/скрипты, расположенные в каталоге $PATH, могут быть выполнены непосредственно в вашей оболочке без указания полного пути к ним. В этой статье вы узнаете, как установить переменную $PATH глобально и локально.

Сначала давайте посмотрим ваше текущее значение $PATH. Откройте терминал и выполните следующую команду:

$ echo $PATH

Результат должен быть примерно таким:

/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games/

Результат отображает список каталогов, разделенных двоеточиями. Вы можете легко добавить больше каталогов, отредактировав файл профиля оболочки вашего пользователя.

В разных оболочках это делается так:

  • оболочка Bash -> ~ / .bash_profile, ~ / .bashrc или .profile
  • оболочка Korn -> ~ / .kshrc или .profile
  • оболочка Z -> ~ / . zshrc или .zprofile

Обратите внимание, в зависимости от того, как вы регистрировались в системе, могут прочитаться разные файлы конфигурации оболочки. Вот что говорит руководство по bash, помните, что есть файлы конфигурации и на других оболочках:

  • /bin/bash — запуск оболочки
  • /etc/profile — глобальный системный файл инициализации, запускается при входе в оболочку**
  • /etc/bash.bashrc — глобальный системный файл сценария конфигурации оболочки
  • ~/.bash_profile — персональный файл инициализации пользователя, запускается при входе в оболочку
  • ~/.bashrc — персональный файл сценария конфигурации оболочки
  • ~/.bash_logout — персональный файл сценария выхода для очистки оболочки, запускается когда пользователь выходит с оболочки
  • ~/.inputrc — персональный файл конфигурации клавиатуры для специфических ситуаций
$ export PATH=$PATH:/path/to/newdir

Конечно, в приведенном выше примере вы должны изменить /path/to/newdir с точным путем, который вы хотите установить.
После того, как вы изменили свой файл .rc или ._profile, вам нужно будет его снова вызвать (прочитать заново), используя команду source.

Например, в bash вы можете сделать это:

$ source ~/.bashrc

Ниже вы можете увидеть пример моей среды $PATH на локальном компьютере:

user@[SEDICOMM]:[/home/user] $ echo $PATH
/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games:/home/user/bin

На самом деле хорошей практикой является создание локальной папки bin для пользователя, где пользователи могут размещать исполняемые файлы. Каждый пользователь будет иметь свою отдельную папку для хранения своего содержимого. Это также является хорошей мерой для обеспечения безопасности вашей системы.

Объяснение системных и пользовательских переменных среды в Windows 11/10

Системные и пользовательские переменные среды всегда были сложной темой для обсуждения среди повседневных пользователей ОС Windows . Что они делают? В учебнике в Интернете сказано добавить переменную PATH, но что это такое? Где найти эти переменные? На все эти вопросы вкратце ответим в этом посте. Мы попытались дать вам общее представление о том, что такое системные и пользовательские переменные среды и как вы можете их использовать.

В этом посте мы обсудим переменные среды, системные и пользовательские переменные среды, а также способы их добавления и изменения. Затем мы перейдем к динамическим системным переменным и посмотрим, как их использовать в командной строке.

Что такое переменная среды В ОС Windows

Переменная среды состоит из двух отдельных слов: « Среда » и « Переменная ». Давайте сначала обсудим «переменную». Это означает, что объект может хранить значение и варьироваться от компьютера к компьютеру. Windows предоставляет «среду» для выполнения приложений и выполнения операций, и это то, что делает первое слово. Сочетая оба эти параметра, переменные среды представляют собой динамические объекты, в которых хранятся значения, предоставляемые средой. Теперь среда предоставляет значения, которые помогают другим программам получать важную информацию о системе. Например, есть переменная среды под названием «windir», которая соответствует каталогу, в котором установлена ​​Windows. Чтобы увидеть это в действии, откройте окно проводника и введите «9».0003 %windir% ’ в адресной строке. Откроется папка установки Windows.

Точно так же вы можете ссылаться на каталог Windows, используя переменную «windir» в других программах и скриптах. Существует множество других переменных, к которым можно получить доступ, «TEMP» или «TMP» — это переменная, указывающая на каталог, в котором хранятся все временные файлы. Самая популярная переменная «Путь» — это та, которая указывает на каталоги, содержащие исполняемые файлы. Так что вы можете запустить программу из командной строки в любом другом каталоге. Мы объяснили Path позже в этом посте. Все эти переменные пригодятся, когда вы что-то разрабатываете или много используете оболочку.

Очень похоже на то, как работает реестр в Windows, у нас есть системные и пользовательские переменные среды. Системные переменные общесистемные и не изменяются от пользователя к пользователю. Принимая во внимание, что пользовательские среды настраиваются по-разному от пользователя к пользователю. Вы можете добавить свои переменные под пользователем, чтобы они не затрагивали других пользователей.

Просто для информации, так как мы подробно обсуждаем эту тему. Системные переменные оцениваются перед Пользовательскими переменными . Поэтому, если есть некоторые пользовательские переменные с тем же именем, что и системные переменные, то пользовательские переменные будут учитываться. Переменная Path генерируется другим способом. Эффективным путем будет переменная пути пользователя, добавленная к переменной системного пути. Таким образом, порядок записей будет следующим: системные записи, за которыми следуют пользовательские записи.

Как добавить и изменить переменные среды

Небольшое предупреждение, прежде чем мы углубимся. Создайте точку восстановления системы и постарайтесь не вмешиваться в существующие настройки, настроенные для вашей системы. До тех пор, пока вы не будете очень уверены в своих действиях. Чтобы открыть окно «Переменные среды», выполните следующие действия:

  1. Щелкните правой кнопкой мыши значок «Этот компьютер» и выберите «Свойства».
  2. Теперь в этом окне выберите «Дополнительные параметры системы» в левой части.
  3. Нажмите последнюю кнопку с надписью «Переменные среды», чтобы открыть предназначенное нам окно.

Открыв его, вы сможете отдельно просматривать пользовательские и системные переменные. Имя переменной находится в первом столбце, а ее значение — во втором. Соответствующие кнопки под таблицей позволяют «Добавить», «Редактировать» и «Удалить» эти переменные.

Использование переменной пути

Путь является наиболее часто используемой переменной среды. Как я уже упоминал, он указывает на каталоги, содержащие исполняемые файлы. После того, как вы правильно настроите переменную Path, вы сможете использовать эти исполняемые файлы из любой точки системы. Попробуем понять это на примере. Откройте окно переменных среды и найдите «Путь» в системных переменных.

Нажмите «Изменить», а затем нажмите «Создать», не играя с другими элементами управления прямо сейчас. Теперь нажмите «Обзор» и выберите папку с нужным исполняемым файлом. Нажмите «ОК» и сохраните все. Я добавил исполняемый файл «Visual Studio Code» в путь.

Теперь, чтобы запустить приложение, откройте командную строку и введите имя исполняемого файла, который находился в папке. Вы можете предоставить дополнительные аргументы, если программа это поддерживает. Программа запустится из командной строки, фактически не находясь в каталоге, из которого вы выполнили команду. В этом прелесть переменной Path .

Прочтите:  Как добавить или изменить переменную среды PATH в Windows.

Список всех переменных среды

Откройте командную строку, введите « SET » и нажмите Enter. Отобразится весь список переменных с их текущими значениями, и вы сможете обращаться к нему для внесения изменений в свой компьютер.

Чтение : Как просмотреть имена и значения переменных среды в Windows

Динамические переменные среды

В отличие от обычных переменных, динамические переменные среды предоставляются CMD, а не системой. Вы не можете изменить значения этих переменных, и они расширяются до различных дискретных значений при каждом запросе. Обычно мы используем эти переменные для пакетной обработки, и они не сохраняются в среде. Даже команда «SET» не покажет эти переменные. Некоторые динамические переменные окружения перечислены ниже.

Чтение : Как добавить переменные среды в контекстное меню.

Список переменных окружения в Windows 11/10

%APPDATA% — C:\Users\\AppData\Roaming

%ALLUSERSPROFILE% — C:\ProgramData

900 02 %CD% – Введя эту команду, вы получите текущую директорию, в которой вы работаете.0004 — C:\Program Files (x86)\Common Files

%COMMONPRGRAMW6432% — C:\Program Files\Common Files

%CMDEXTVERSION% — эта переменная заменяется на версию расширения командной строки с.

%COMSPEC% — C:\Windows\System32\cmd.exe

%DATE% : — Эта переменная даст вам текущую дату в соответствии с настройками формата даты.

%ERRORLEVEL% — определяет уровень ошибки, установленный последней выполненной командой.

%HOMEDRIVE%   – C:\

%HOMEPATH%   -C:\Users\<имя пользователя>

%LOCALAPPDATA% – C:\Users\<пользователь имя>\AppData\Local

%LOGONSERVER% – \\

%PATH% – C:\Windows\system32;C:\Windows;C:\Windows\System32\Wbem

%PATHEXT% – .com;. exe;.bat;.cmd;.vbs;.vbe;.js;.jse;.wsf;.wsh;.msc

%PROGRAMDATA% — C:\ProgramData

%PROGRAMFILES% – C:\Program Files

%PROGRAMW6432% – C:\Program Files

%PROGRAMFILES(X86)% – C: \Program Files (x86)

%ПРОМТ % — $P$G

%SYSTEMDRIVE% — C:

%SYSTEMROOT% — C:\Windows

%TIME% — Точно так же показывает текущее время в соответствии с настройками формата времени .

%TMP% — C:\Users\<имя пользователя>\AppData\Local\Temp

%TEMP% – C:\Users\\AppData\Local\Temp

%USERNAME%

%USERPROFILE% – C:\Users \<имя пользователя>

%USERDOMAIN% — Домен пользователя, связанный с текущим пользователем.

%USERDOMAIN_ROAMINGPROFILE% — Домен пользователя, связанный с перемещаемым профилем.

%WINDIR%   – C:\Windows

%PUBLIC% – C:\Users\Public

%PSMODULEPATH% — %SystemRoot%\system32\WindowsPowerShell\v1.0\Modules\

%ONEDRIVE%   — C:\Users\\OneDrive

%DRVERD ATA%  – C:\ Windows\System32\Drivers\DriverData

%CMDCMDLINE%   — вывод командной строки, используемой для запуска текущего сеанса командной строки. (Командная строка)

%COMPUTERNAME%   — выводит имя системы.

%PROCESSOR_REVISION% — Выводит версию процессора.

%PROCESSOR_IDENTIFIER%   — Выводит идентификатор процессора.

%PROCESSOR_LEVEL%   — Выводит уровень процессора.

%RANDOM% — Эта переменная печатает случайное число от 0 до 32767

%NUMBER_OF_PROCESSORS% — Выводит количество физических и виртуальных ядер.

%OS% – Windows_NT

Это было в основном о системных и пользовательских переменных среды в Windows. Windows поставляется с гораздо большим количеством переменных — не забудьте проверить их с помощью команды «SET».

СОВЕТ : Rapid Environment Editor — это мощный редактор переменных среды для Windows.

118
Акции

  • Подробнее

Советы и рекомендации по переменным среды Linux

Опубликовано:
18 декабря 2019 г.

|

|

на
Кен Хесс (выпускники Sudoer)

Изображение

«Советы и рекомендации» от moore.owen38 лицензируется в соответствии с CC BY 2.0

.

Переменные среды существуют для улучшения и стандартизации среды оболочки в системах Linux. Существуют стандартные переменные среды, которые система устанавливает для вас, но вы также можете настроить свои собственные переменные среды или при желании изменить переменные по умолчанию в соответствии с вашими потребностями.

[Бесплатная загрузка: Шпаргалка по расширенным командам Linux. ]

Начиная с команды

env

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

 $ env
LS_COLORS=(длинный вывод)
ЯЗЫК=en_US.UTF-8
HISTCONTROL=игнорируется
HOSTNAME=rhel8t
XDG_SESSION_ID=5
ПОЛЬЗОВАТЕЛЬ=хесс
SELINUX_ROLE_REQUESTED=
PWD=/дом/хес
HOME=/дом/хес
SSH_CLIENT=192. 168.1.94 53911 22
SELINUX_LEVEL_REQUESTED= XDG_DATA_DIRS=/home/khess/.local/share/flatpak/exports/share:/var/lib/flatpak/exports/share:/usr/local/share:/usr/share
SSH_TTY=/dev/pts/1
MAIL=/var/spool/mail/khess
ТЕРМИН=xterm-256color
SHELL=/bin/bash SELINUX_USE_CURRENT_RANGE=
SHLVL=1
LOGNAME=хесс
DBUS_SESSION_BUS_ADDRESS=unix:path=/run/пользователь/1000/шина
XDG_RUNTIME_DIR=/run/user/1000 PATH=/home/khess/.local/bin:/home/khess/bin:/usr/local/bin:/usr/bin:/usr/local/sbin:/usr/sbin :/опт/бен
ГИСТРАЗМЕР=1000
LESSOPEN=||/usr/bin/lesspipe.sh %s _=/usr/bin/env
 

Я пропустил вывод переменной LS_COLORS , потому что он слишком длинный. Попробуйте эту команду в своей системе, чтобы увидеть, как выглядит полный вывод.

Многие переменные среды устанавливаются, а затем экспортируются из файла /etc/profile и файла /etc/bashrc . В /etc/profile есть строка, которая гласит:

 export PATH USER LOGNAME MAIL HOSTNAME HISTSIZE HISTCONTROL
 

Чтобы внести постоянные изменения в переменные среды для всех новых учетных записей, перейдите на /etc/skel файлы, например . bashrc , и изменить уже существующие или ввести новые. Когда вы создаете новых пользователей, эти файлы /etc/skel будут скопированы в домашний каталог нового пользователя.

Изучение уровней оболочки (

SHLVL )

Чтобы вызвать значение одной переменной среды, введите следующую команду, используя в качестве примера SHLVL (уровень оболочки):

 $ echo $SHLVL 1
 

Эта переменная изменяется в зависимости от того, сколько подоболочек у вас открыто. Например, введите bash дважды, а затем снова введите команду:

 $ bash
$ bash эхо $SHLVL 3
 

Уровень оболочки три означает, что у вас две подоболочки в глубину, поэтому дважды введите exit , чтобы вернуться в обычную оболочку.

[Хотите попробовать Red Hat Enterprise Linux? Загрузите его бесплатно.] 

Управление вашей

PATH переменной

PATH переменная содержит путь поиска для выполнения команд и сценариев. Чтобы увидеть свою ПУТЬ , введите:

 $ echo $PATH /home/khess/.local/bin:/home/khess/bin:/usr/local/bin:/usr/bin:/usr/local/sbin:/usr /сбин
 

Временно измените свой PATH , введя следующую команду, чтобы добавить /opt/bin :

 $ PATH=$PATH:/opt/bin
$ echo $PATH /home/khess/.local/bin:/home/khess/bin:/usr/local/bin:/usr/bin:/usr/local/sbin:/usr/sbin:/opt/bin
 

Изменение является временным для текущего сеанса. Он не постоянен, потому что он не вошел в число 9.0309 .bashrc файл. Чтобы сделать изменение постоянным, введите команду PATH=$PATH:/opt/bin в файл .bashrc вашего домашнего каталога.

При этом вы создаете новую переменную PATH , добавляя каталог к ​​текущей переменной PATH , $PATH . Двоеточие ( : ) разделяет записей PATH .

Распутывание

$USER , $PWD , и $LOGNAME

У меня была теория, которую, я думаю, я развеял. Моя теория заключалась в том, что команды pwd и whoami , вероятно, просто прочитали и повторили содержимое переменных оболочки $PWD и $USER или $LOGNAME соответственно. К моему удивлению, после просмотра исходного кода они этого не делают. Может быть, я должен переписать их, чтобы сделать именно это. Нет причин добавлять несколько библиотек и почти 400 строк кода C для отображения рабочего каталога. Вы можете просто прочитать $PWD и вывести это на экран (stdout). То же самое и с whoami с $USER или $LOGNAME .

Если вы хотите сами взглянуть на исходный код, он есть на GitHub и в других местах. Если вы обнаружите, что эти программы (или другие) используют переменные оболочки, я хотел бы узнать об этом. По общему признанию, я не так уж хорош в чтении исходного кода C, поэтому они вполне могли использовать переменные оболочки, а я никогда об этом не узнал. Они просто не казались из того, что я читал и мог понять.

Игра на

$SHELL game

В этом последнем обзоре переменных среды я хочу показать вам, как переменная $SHELL может оказаться полезной. Вам не нужно оставаться в оболочке по умолчанию, которой, вероятно, является Bash. Вы можете войти и работать в любой оболочке, установленной в системе. Чтобы узнать, какие оболочки установлены в вашей системе, используйте следующую команду:

 $ cat /etc/shells /bin/sh /bin/bash /usr/bin/sh /usr/bin/bash
 

Все это на самом деле Bash, так что не волнуйтесь. Если вам повезет, вы также можете увидеть записи для /bin/tcsh , /bin/csh , /bin/mksh , /bin/ksh и /bin/rksh .

Вы можете использовать любую из этих оболочек, и в каждой из них могут происходить разные вещи, если вы к этому склонны. Но предположим, что вы являетесь администратором Solaris и хотите использовать оболочку Korn. Вы можете изменить оболочку по умолчанию на /bin/ksh с помощью команды chsh :

 $ chsh Изменение оболочки для khess. Новая оболочка [/bin/bash]: /bin/ksh Пароль: оболочка изменена.
 

Теперь, если вы наберете  echo $SHELL , ответ будет /bin/bash , поэтому вам нужно выйти из системы и войти снова, чтобы увидеть изменения. После выхода из системы и входа в систему вы получите другой ответ на echo $SHELL .

Вы можете ввести другие оболочки, и echo $SHELL должен  сообщить о вашей текущей оболочке и $SHLVL , что поможет вам ориентироваться в том, сколько у вас оболочек.

[ Узнайте, как успешно управлять средой Linux. ]

Установка собственных переменных среды

Вы можете установить свои собственные переменные в командной строке для каждого сеанса или сделать их постоянными, поместив их в файл ~/.