Как это работает
В соответствии с конфигурацией по умолчанию в , модуль автоматически запускает в случае, когда пользователь в первый раз входит в систему . Этот процесс будет работать до тех пор, пока существует сессия этого пользователя, и будет убит, как только последний сеанс для пользователя будет закрыт. Когда включен , то процесс запускается при загрузке и убит не будет. Пользовательский процесс systemd отвечает за управление службами пользователей, которые могут быть использованы для запуска демонов или автоматизированных задач, со всеми преимуществами systemd, таких как активация сокета, таймеры, системы зависимостей или строгий контроль процесса через контрольные группы.
Аналогично системным службам, пользовательские службы расположены в следующих каталогах (отсортированы по возрастанию приоритета):
- где находятся службы, относящиеся к установленным пакетам.
- где находятся службы, относящиеся к пакетам, установленным в домашний каталог.
- где находятся общесистемные пользовательские службы, созданные системным администратором.
- где пользователь размещает свои собственные службы.
При запуске пользовательского процесса systemd он привязывается к пользовательской же (то есть отдельной для каждого пользователя) цели . Другие службы могут управляться вручную с помощью команды . См. .
Примечание:
- выполняется как процесс, отдельный от родительского процесса . Службы пользователей не могут ссылаться или зависеть от системных юнитов или юнитов других пользователей.
Переменные среды списка
Наиболее используемой командой для отображения переменных среды является . Если имя переменной передается в качестве аргумента команды, отображается только значение этой переменной. Если аргумент не указан, печатается список всех переменных среды, по одной переменной на строку.
Например, чтобы отобразить значение переменной среды, вы должны выполнить:
Вывод выведет путь текущего пользователя, вошедшего в систему:
Вы также можете передать в команду более одного аргумента:
Если вы запустите команду or без аргументов, она покажет список всех переменных среды:
Вывод будет выглядеть примерно так:
Ниже приведены некоторые из наиболее распространенных переменных среды:
- — текущий вошедший в систему пользователь.
- — Домашний каталог текущего пользователя.
- — Используемый по умолчанию редактор файлов. Это редактор, который будет использоваться при вводе в вашем терминале.
- — Путь к оболочке текущего пользователя, например, bash или zsh.
- — имя текущего пользователя.
- — Список каталогов для поиска при выполнении команд. Когда вы запускаете команду, система будет искать эти каталоги в указанном порядке и использовать первый найденный исполняемый файл.
- — текущие настройки локалей.
- — Текущая эмуляция терминала.
- — Место хранения почты текущего пользователя.
И команды печатают только переменные окружения. Если вы хотите получить список всех переменных, включая окружение, оболочку и переменные, а также функции оболочки, вы можете использовать команду:
Вы также можете использовать команду echo для печати переменной оболочки. Например, чтобы напечатать значение переменной, которую вы запустите:
1 ответ
2
Лучший ответ
Не уверен, что это проблема с pyqt или python. Вероятно, после запуска с привилегиями root вы теряете некоторые переменные среды и среди них .
Это не имеет большого значения, так как Qt достаточно умен, чтобы вернуться к разумному дефолту, но вы можете сохранить текущие настройки окружения vars с :
UPD: вместо копирования всех ваших vars в повышенную (корневую) среду (что может вызвать угрозу безопасности) вы можете явно указать набор переменных для хранения через файл . Отредактируйте этот файл командой и добавьте строку:
UPD2: если вы хотите получить доступ к последовательному устройству без привилегий суперпользователя, добавьте своего пользователя в группу устройств (обычно это называется ):
logout — логин может потребоваться после смены группы
31 авг. 2017, в 12:18
Поделиться
Ещё вопросы
- 1Как загрузить Eden с композитором?
- Получить указатель на BSTR из вектора <BSTR>
- 2Как решить «Строковые или двоичные данные будут обрезаны. \ R \ nОперация была прервана». Ошибка?
- 1как сменить пароль администратора zen-cart с mysql
- 1Какую информацию хранит сериализованный объект?
- Почему обтекание вызывает размытие моего ввода?
- Ошибка DialogProvider при создании диалога angularjs
- 1Почему `self` не используется в этом методе?
- 1JS SDK, код ошибки Thrift 12 при получении списка SharedNotebooksList
- Pop {pc} в сборке
- Неожиданный идентификатор при нажатии кнопки
- Как разместить реляционные данные с помощью HTML-формы
- 1Изменение формата в файле XLS с JExcel API
- JQuery $ .post, form… Отправить Дополнительные данные, используя сообщение при каждом нажатии кнопки отправки.
- Rails неопределенный метод `email ‘для nil: NilClass
- Подкатегория Magento Foreach получить список продуктов
- Отслеживание полилинии в графическом представлении в Qt
- 1Как преобразовать формат изображения webP в обычный? PHP
- 1node.js API Google Sheets не позволяет публиковать новые значения
- 1Триггеры и представления SQLite для Android?
- Функция ссылки угловой директивы не будет манипулировать DOM
- 1Управление видимостью элементов SVG
- RestAPI и Front-End на одном и том же порту в Docker
- 1Многопоточность в хранилище данных Google App Engine
- Многомерный массив не отправляется
- ‘background-position’ на ‘background-color’ с помощью CSS
- Почему IE10 отличается от других браузеров
- 2Перетаскивание из обозревателя серверов в DataSet и DBML Designer НЕ работает
- 2Разница между hash_equals и функцией strcmp
- 1Как сделать строку из числа BegDecimal, содержащего только неотъемлемую часть
- 1Firebase 5 AngularFire2 5: найти ключ в базе данных
- 1Не могу установить функцию интерфейса PHP — почему?
- Как построить модульные цепочки обещаний?
- 1Разбор XML и игнорирование специальных символов с php
- 1Получить возраст пользователя от возврата API отметки времени
- 1Как получить размер приложения
- 1TCPDF: Как создать PDF-файл в альбомной ориентации, разбить его на две части и напечатать таблицу в первом ряду, а затем перейти ко второму?
- 1Как получить Экстра из предыдущего действия, чтобы установить различные намерения кнопки?
- невозможно передать несколько элементов списка в php
- Пользовательский фильтр AngularJS вызывается дважды и удаляет входные данные при втором вызове
- HTML CSS Hover Image Ссылка с одним изображением
- 1Массив кнопок андроида
- 1Android Bluetooth не поддерживается
- JQuery — глобальный вызов функции при отправке запроса к серверу
- 1Объекты сканера в методах и NoSuchElementException
- 1Как объединить несколько кодов, суммируя значения общих ключей (и сохраняя их со значением 0) в Python?
- Почему я получаю этот результат, используя GROUP BY?
- Предотвращение превышения счетчиком jQuery количества элементов списка
Но ожидайте, что если ни одна из вышеупомянутых работ?
Я думаю, что это — довольно полный ответ, но если бы Вы все еще испытываете затруднения, существует еще одна вещь, которую я предложил бы. Можно использовать (1) предоставить доступ определенному пользователю на локальном хосте (Ваша машина) как так,
В этом случае мы указываем как имя пользователя, так как это — учетная запись это запускает программы как.
: Q: я только получил один экран, итак, почему X отображается, нуждаются в «адресе»? A: это — потому что X может работать не только над Вашей машиной, но и по Интернету. С X, легко запустить программы на Вашей машине, которые обнаруживаются на других узлах Интернета и программах на других хостах, которые появляются на Вашем экране (предполагающий, что Вы даете им разрешение).
Usage
The Weston compositor is a minimal and fast compositor and is suitable for many embedded and mobile use cases.
Enable the USE flag for building example applications like weston-image or weston-view.
Weston is configured on a local level with the ~/.config/weston.ini file (cf. man 5 weston.ini).
NoteFollow the instructions below if your environment does not define XDG_RUNTIME_DIR. Weston creates its unix socket file in the directory specified by this environment variable and clients use the same variable to find that socket.
The environment variable can be defined in the usual configuration files. For example, if Larry the cow (Larry) sets XDG_RUNTIME_DIR variable in his Bash shell’s configuration file and he has chosen that the directory will be in /tmp.
FILE Set XDG_RUNTIME_DIR
#!/bin/bash if test -z "${XDG_RUNTIME_DIR}"; then export XDG_RUNTIME_DIR=/tmp/${UID}-runtime-dir if ! test -d "${XDG_RUNTIME_DIR}"; then mkdir "${XDG_RUNTIME_DIR}" chmod 0700 "${XDG_RUNTIME_DIR}" fi fi
To launch the compositor as a standalone display server (i) enable systemd session support for weston-launch (by USE=systemd), (ii) or users without systemd are referred to the section below.
On a VT (outside of X), launch Weston with the DRM backend:
Ditto, with XWayland support:
Nest a weston instance «wayland-1» in another Weston «wayland-0»:
From an X terminal, launch Weston with the x11 backend:
weston-launch without systemd
You have to create the group named «weston-launch», and add the user to that group:
Notice: This might be unbelievable, but true: The group name «weston-launch» is hardcoded, and the command weston-launch checks if the user belongs to it. It is not relevant e.g. a device file is writable to a user.
Постоянные переменные среды
Чтобы сделать переменные среды постоянными, вам необходимо определить эти переменные в файлах конфигурации bash. В большинстве дистрибутивов Linux при запуске нового сеанса переменные среды считываются из следующих файлов:
-
— используйте этот файл для настройки общесистемных переменных среды. Переменные в этом файле задаются в следующем формате:
-
— переменные, установленные в этом файле, загружаются при входе в оболочку входа в bash. При объявлении переменных окружения в этом файле вам необходимо использовать команду :
-
Файлы конфигурации для конкретной оболочки пользователя. Например, если вы используете Bash, вы можете объявить переменные в :
Чтобы загрузить новые переменные среды в текущий сеанс оболочки, используйте команду:
Переменные среды и переменные оболочки
Переменные имеют следующий формат:
KEY=value KEY="Другое значение" KEY=value1:value2
- Имена переменных чувствительны к регистру. По соглашению переменные среды должны иметь имена в ВЕРХНЕМ РЕГИСТРЕ.
- При назначении нескольких значений переменной они должны быть разделены символом двоеточия :.
- Вокруг символа = равенства нет места.
Переменные можно классифицировать на две основные категории: переменные среды и переменные оболочки.
Переменные среды – это переменные, которые доступны для всей системы и наследуются всеми порожденными дочерними процессами и оболочками.
Переменные оболочки – это переменные, которые применяются только к текущему экземпляру оболочки. Каждая оболочка, такая как zsh и bash, имеет свой собственный набор внутренних переменных оболочки.
Есть несколько доступных команд, которые позволяют вам перечислять и устанавливать переменные среды в Linux:
- env – Команда позволяет запускать другую программу в пользовательской среде без изменения текущей. При использовании без аргумента он напечатает список текущих переменных среды.
- printenv – Команда печатает все или указанные переменные среды.
- set – Команда устанавливает или отменяет переменные оболочки. Когда используется без аргумента, он напечатает список всех переменных, включая переменные окружения и оболочки, а также функции оболочки.
- unset – Команда удаляет переменные оболочки и окружения.
- export – Команда устанавливает переменные среды.
Переменные среды списка
Наиболее используемой командой для отображения переменных среды является printenv. Если имя переменной передается в качестве аргумента команды, отображается только значение этой переменной. Если аргумент не указан, printenv печатается список всех переменных среды, по одной переменной на строку.
Например, для отображения значения HOMEпеременной среды вы должны выполнить:
printenv HOME
Выходные данные выведут путь текущего пользователя, вошедшего в систему:
/home/AndreyEx
Вы также можете передать в команду printenv более одного аргумента :
printenv LANG PWD
en_US /home/AndreyEx
Если вы запустите команду printenvor env без аргументов, она покажет список всех переменных среды:
printenv
Вывод будет выглядеть примерно так:
LS_COLORS=rs=0:di=01;34:ln=01;36:mh=00:pi=40;33:so=01;35;... LESSCLOSE=/usr/bin/lesspipe %s %s LANG=en_US S_COLORS=auto XDG_SESSION_ID=5 USER=AndreyEx PWD=/home/AndreyEx HOME=/home/AndreyEx SSH_CLIENT=192.168.121.1 34422 22 XDG_DATA_DIRS=/usr/local/share:/usr/share:/var/lib/snapd/desktop SSH_TTY=/dev/pts/0 MAIL=/var/mail/AndreyEx TERM=xterm-256color SHELL=/bin/bash SHLVL=1 LANGUAGE=en_US: LOGNAME=AndreyEx XDG_RUNTIME_DIR=/run/user/1000 PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games:/snap/bin LESSOPEN=| /usr/bin/lesspipe %s _=/usr/bin/printenv
Ниже приведены некоторые из наиболее распространенных переменных среды:
- USER – текущий вошедший в систему пользователь.
- HOME – Домашний каталог текущего пользователя.
- EDITOR- Используемый по умолчанию редактор файлов. Это редактор, который будет использоваться при вводе edit в вашем терминале.
- SHELL – Путь к оболочке текущего пользователя, например, bash или zsh.
- LOGNAME – имя текущего пользователя.
- PATH – Список каталогов, которые нужно искать при выполнении команд. Когда вы запускаете команду, система будет искать эти каталоги в указанном порядке и использовать первый найденный исполняемый файл.
- LANG – текущие настройки локалей.
- TERM – Текущая эмуляция терминала.
- MAIL – Место хранения почты текущего пользователя.
Команды printenv и env печатают только переменные окружения. Если вы хотите получить список всех переменных, включая окружение, оболочку и переменные, а также функции оболочки, вы можете использовать setкоманду:
set
BASH=/bin/bash BASHOPTS=checkwinsize:cmdhist:complete_fullquote:expand_aliases:extglob:extquote:force_fignore:histappend:interactive_comments:login_shell:progcomp:promptvars:sourcepath BASH_ALIASES=() BASH_ARGC=() BASH_ARGV=()
Команда отобразит большой список всех переменных, поэтому вы, вероятно, захотите направить вывод в команду less.
set | less
Вы также можете использовать echoдля печати переменной оболочки. Например, чтобы напечатать значение переменной BASH_VERSION, которую вы запустите:
echo $BASH_VERSION
4.4.19(1)-release
X DISPLAY
Возможно, ваш следующий вопрос: что это , что , что evince не может открыть ? «Экран» — это адрес вашего экрана. Любая программа, которая хочет записать на экран, должна знать адрес. Вы можете увидеть, что отображается на вашем X-дисплее, проверив переменную среды DISPLAY:
И вы можете проверить, что sudo считает ваш DISPLAY, набрав:
Если это ничего не показывает, то в этом проблема. (См. Исправление ниже).
XAUTHORITY
Но что, если это не проблема, а DISPLAY правильно задано в sudo? Тогда вы можете задаться вопросом, имеют ли X какие-то разрешения, запрещающие другим пользователям писать на моем дисплее? Если бы вы подумали, что вы правы, X имеет два основных метода авторизации: xauth и xhost. Наиболее часто используемым сегодня является XDG_RUNTIME_DIR , который использует переменную среды XAUTHORITY. Опять же, давайте проверим, правильно ли он установлен в sudo:
Если XAUTHORITY указывает на файл в вашем домашнем каталоге для вас, но при запуске sudo он пуст, то в этом проблема.
ИСПРАВЛЕНИЕ: Сохраните переменные среды
Итак, в чем же проблема? Если переменные среды DISPLAY или XAUTHORITY не сохраняются в sudo, вы можете указать sudo (8) сохранить среду с помощью параметра -E, например:
Завершение процессов пользователя при выходе из системы
Arch Linux создает пакет с помощью , устанавливая равным по умолчанию. Этот параметр предотвращает уничтожение пользовательских процессов, когда пользователь полностью выходит из системы. Чтобы изменить это поведение и убить все пользовательские процессы при выходе из системы, установите в .
Обратите внимание, что изменение этого параметра нарушает работу мультиплексоров терминала, таких как tmux и GNU Screen (Русский). Если вы измените этот параметр, вы все равно сможете использовать терминальный мультиплексор, используя следующим образом:
$ systemd-run --scope --user command args
Например, чтобы запустить , вы должны сделать:
$ systemd-run --scope --user screen -S foo
Запущенные с помощью процессы продолжат работу даже после выхода пользователя, если он залогинен в системе где-то ещё и служба всё ещё работает.
2 ответа
Лучший ответ
TL; DR, эти переменные недоступны в случае , а некоторые даже не могут быть установлены вообще в стандартном случае входа в систему.
В моей системе Linux (Debian некоторые из переменных определяются, когда сеанс пользователя инициализируется модулем pam . Переменные, определенные для инициализации в этот момент, задокументированы на странице руководства, но включают .
Этот модуль загружается только в случаях входа в систему, т.е. мне нужно подключиться к системе по ssh или войти через консоль / графический интерфейс, чтобы инициализировать сеанс пользователя через модуль .
Этот модуль не загружается в случаях или .
В результате, когда вы выполняете для имитации пользователя, эта переменная не устанавливается.
Другие переменные применимы только тогда, когда пользователь фактически вошел в систему через графический интерфейс. Я не устанавливаю эти переменные в графическом интерфейсе пользователя, который я использую, но в документации для переменных XDG укажите, что они должны использовать по умолчанию, если они не установлены. Значение по умолчанию для — , а значение по умолчанию для — .
Таким образом, вы должны ожидать, что эти переменные будут установлены только в интерактивном случае входа в систему, а не в неинтерактивном случае — будет эффективно обозначен как неинтерактивный случай, даже если вы можете делать с ним интерактивные действия .
Эти значения очень шаблонны — например, в моей системе — , и, согласно справочной странице, не сохраняется после моего последнего выхода из системы; так что это не место для постоянных файлов.
Если вы, как пользователь, не измените эти значения, я ожидаю использовать значения по умолчанию, указанные в документации XDG, , которые будут использоваться. Вероятно, есть и другие, но я просто выбрал совместимость с KDE, как это указано в руководстве системного администратора.
3
wheredidthatnamecomefrom
8 Янв 2017 в 21:09
Изоляция всех обычных пользователей (несистемных учетных записей) в Linux состоит из нескольких частей. Для вашей цели проще всего, вероятно, прочитать всех пользователей в массив, а затем просмотреть конфигурацию XDG для каждого. Вот быстрый сценарий bash для этой цели:
Это напечатает все переменные среды XDG для каждого пользователя с кратким заголовком, чтобы определить, чей это. Если вы предпочитаете все это в одной строке:
Вы можете ограничить или изменить, какие переменные среды XDG выбираются, сузив аргумент для .
David C. Rankin
2 Мар 2015 в 12:42
Как пользоваться Linux в WSL
Чтобы открыть установленную вами среду Linux, просто откройте меню «Пуск» и найдите установленный вами дистрибутив. Например, если вы установили Kali Linux, запустите ярлык Kali Linux.
Вы можете закрепить этот ярлык приложения в меню «Пуск», на панели задач или на рабочем столе для облегчения доступа.
При первом запуске среды Linux вам будет предложено ввести имя пользователя и пароль UNIX. Они необязательно должны совпадать с вашим именем пользователя и паролем Windows, но будут использоваться в среде Linux.
Например, если вы введёте «alex» и «hackware» в качестве учётных данных, ваше имя пользователя в среде Linux будет «alex», а пароль, который вы используете в среде Linux, будет «hackware» — независимо от вашего имени пользователя Windows и его пароля.
Вы можете запустить установленную среду Linux, выполнив команду wsl. Если у вас установлено несколько дистрибутивов Linux, вы можете выбрать среду Linux по умолчанию, запускаемую этой командой.
Если у вас установлена Kali Linux, вы также можете запустить команду kali, чтобы установить её. Для openSUSE Leap 15 SP1 используйте opensuse-15-sp1. Для SUSE Linux Enterprise Server 15 SP1 используйте SLES-15-SP1. Эти команды перечислены на странице каждого дистрибутива Linux в Магазине Windows.
Вы по-прежнему можете запустить среду Linux по умолчанию, выполнив команду bash, но Microsoft утверждает, что это устарело. Это означает, что команда bash может перестать работать в будущем.
Если у вас есть опыт использования оболочки Bash в Linux, Mac OS X или других платформах, вы будете как дома.
В Kali Linux и Ubuntu вам нужно добавить к команде префикс sudo, чтобы запустить её с правами root. Пользователь «root» на платформах UNIX имеет полный доступ к системе, как пользователь «Администратор» в Windows. Ваша файловая система Windows в среде оболочки Bash находится в /mnt/c.
Ещё одна важная особенность дистрибутивов Linux, запущенных этим образом, в том, что прямо в консоли Linux вы можете выполнять команды Windows.
Связанная статья: Что такое sudo
Используйте те же команды терминала Linux, которые вы используете в этой операционной системе. Если вы привыкли к стандартной командной строке Windows с её командами DOS, вот несколько основных команд, общих для Bash и Windows:
- Изменить каталог: cd в Bash, cd или chdir в DOS
- Список содержимого каталога: ls в Bash, dir в DOS
- Перемещение или переименование файла: mv в Bash, move и rename в DOS
- Скопировать файл: cp в Bash, copy в DOS
- Удалить файл: rm в Bash, del или erase в DOS
- Создайте каталог: mkdir в Bash, mkdir в DOS
- Используйте текстовый редактор: vi или nano в Bash, edit в DOS
Связанная статья: Азы работы в командной строке Linux (часть 1), а также последующе части
Важно помнить, что, в отличие от Windows, оболочка Bash и её среда, имитирующая Linux, чувствительны к регистру. Другими словами, «File.txt» с большой буквы отличается от «file.txt» без заглавной буквы.. Дополнительные инструкции смотрите в серии наших руководств Азы работы в командной строке Linux для начинающих.
Дополнительные инструкции смотрите в серии наших руководств Азы работы в командной строке Linux для начинающих.
Вам нужно будет использовать команду apt для установки и обновления программного обеспечения среды Debian, Kali Linux, Ubuntu. Не забудьте указать перед этими командами префикс sudo, чтобы они запускались от имени пользователя root — Linux-эквивалента Администратора. Вот команды apt, которые вам нужно знать:
Загрузить обновлённую информацию о доступных пакетах:
sudo apt update
Установить пакет приложения (замените «ИМЯ-ПАКЕТА» на имя пакета):
sudo apt install ИМЯ-ПАКЕТА
Удаление пакета приложения (замените «ИМЯ-ПАКЕТА» на имя пакета):
sudo apt remove ИМЯ-ПАКЕТА
Поиск доступных пакетов (замените СЛОВО словом, по которому нужно искать пакеты в именах и описаниях):
sudo apt search СЛОВО
Загрузите и установите последние версии установленных пакетов:
sudo apt full-upgrade
Если вы установили дистрибутив SUSE Linux, вместо этого вы можете использовать команду zypper для установки программного обеспечения.
После того, как вы загрузили и установили приложение, вы можете ввести его имя в запросе, а затем нажать Enter, чтобы запустить его. Дополнительную информацию смотрите в документации к конкретному приложению.
Программное обеспечение, устанавливаемое в оболочке Bash, ограничено оболочкой Bash. Вы можете получить доступ к этим программам из командной строки, PowerShell или где-либо ещё в Windows, но только если вы запустите команду вида
bash -c КОМАНДА
X DISPLAY
Ваш следующий вопрос может быть таким, что это за «дисплей Х», который не может открыться? «Дисплей» — это адрес вашего экрана. Любая программа, которая хочет записать на ваш экран, должна знать адрес. Вы можете узнать, что представляет собой ваш дисплей X, проверив переменную окружения DISPLAY:
И вы можете проверить, что думает, что ваш DISPLAY, набрав:
Если это ничего не показывает, тогда это проблема. (См. Исправление ниже).
XAUTHORITY
Но что, если это не проблема, и правильно установлен в ? Тогда вы можете спросить, есть ли у X какие-то разрешения, которые мешают другим пользователям писать на моем дисплее? Если вы думаете, что вы правы, у X есть два основных метода авторизации: а также , Наиболее часто используемый сегодня (1) который использует переменная окружения. Опять же, давайте проверим, правильно ли он установлен в :
Если указывает на файл в вашем домашнем каталоге для вас, но он пуст при запуске тогда это проблема.
ИСПРАВЛЕНИЕ: Сохранить переменные среды
Так в чем же дело? Если либо или переменные среды не сохраняются через , ты можешь сказать (8) для сохранения окружающей среды с помощью вариант, вот так:
Основные настройки
Все пользовательские службы размещаются в . Если вы хотите запускать службы при первом входе в систему, выполните для любой службы, которую вы хотите сделать автозагрузочной.
Совет: Если вы хотите включить службу для всех пользователей, а не для пользователя, выполняющего команду systemctl , запустите от имени суперпользователя.
Переменные окружения
Пользовательский процесс systemd не наследует какую-либо из переменных окружения, установленных в или других. Существует несколько способов установить переменные окружения для systemd:
- Для переменной пользовательского каталога, создайте файл .conf в каталоге со строками вида {{ic | 1 = NAME = VAL}. Применяется только к части пользовательских служб.
Смотрите для получения дополнительной информации.
- Используйте опцию в . Применяется ко всем пользовательским службам.
- Добавление конфигурационного файла в . Применяется ко всем пользовательским процессам; см
- Для временного изменения используйте или . Применяется ко всем пользовательским службам, созданным после установки переменных окружения, но не к службам, которые уже были запущены.
- Используйте команда обеспечивается dbus. Имеет тот же эффект, что и , но так же влияет на сессию D-Bus. Вы можете добавить это в конец вашего файла инициализации оболочки.
- Для «глобальных» переменных пользовательского окружения вы можете использовать каталоги , которые анализируются генераторами systemd. Подробнее см. и .
- Вы также можете написать скрипт генератора среды, который может создавать переменные среды, которые варьируются от пользователя к пользователю. Это, вероятно, лучший способ, если вам нужны индивидуальные среды (это относится к , и т.д.). Смотрите .
Одну переменную Вы можете установить в .
После настройки можно использовать команду для проверки правильности значений.
Пример службы
Создайте каталог и внутри создайте файл с расширением (например, ):
/etc/systemd/system/[email protected]/local.conf
Environment="PATH=/usr/lib/ccache/bin:/usr/local/bin:/usr/bin:/bin" Environment="EDITOR=nano -c" Environment="BROWSER=firefox" Environment="NO_AT_BRIDGE=1"
PATH
Если изменить и запланированный запуск приложений, которые используют службу systemd, Вы должны убедиться, что модифицированный установлен и в среде systemd. Если предположить, что Вы установили переменную в , то лучшим способом сделать systemd осведомленным о модификации будет добавление в после заданной переменной:
~/.bash_profile
systemctl --user import-environment PATH
Обратите внимание, что это не повлияет на службы systemd, запущенные до импортирования PATH.
pam_environment
Переменные среды можно сделать доступными с помощью модуля . Смотрите для деталей конфигурации.
Автоматический запуск systemd от имени пользователя
Пользовательский процесс systemd запускается сразу после первого входа пользователя в систему, и будет убит после завершения последнего сеанса пользователя. Иногда может быть полезно запустить службу сразу после загрузки, и поддерживать процесс systemd запущенным даже после завершения последнего сеанса пользователя, например, чтобы некоторый пользовательский процесс работал без какой-либо открытой сессии. Для этой цели используются долговременные службы. Используйте следующую команду, чтобы включить долговременную службу для конкретного пользователя:
# loginctl enable-linger username
Важно: Служба systemd находится вне сессии, она запускается за пределами logind. Не используйте долговременные службы для включения автоматического входа в систему, иначе будет .
Установка переменных среды
Чтобы лучше проиллюстрировать разницу между переменными Shell и Environment, мы начнем с установки переменных Shell, а затем перейдем к переменным Environment.
Чтобы создать новую переменную оболочки с именем и значением, просто введите:
Вы можете проверить, что переменная установлена, используя любой из фильтров вывода команды set с помощью grep :
Используйте команду, чтобы проверить, является ли эта переменная переменной среды:
Вывод будет пустым, что говорит о том, что переменная не является переменной окружения.
Вы также можете попробовать напечатать переменную в под-оболочке, и вы получите пустой вывод.
Команда используется для установки переменных окружения.
Чтобы создать переменную среды, просто экспортируйте переменную оболочки как переменную среды:
Вы можете проверить это, запустив:
Если вы попытаетесь напечатать переменную в подоболочке на этот раз, вы получите имя переменной, напечатанное на вашем терминале:
Вы также можете установить переменные среды в одну строку:
Переменные среды, созданные таким образом, доступны только в текущем сеансе. Если вы откроете новую оболочку или выйдете из системы, все переменные будут потеряны.