Как установить PATH для всех пользователей в Debian?


25

У меня есть сервер Debian Lenny, и я хотел бы, чтобы www-dataпользователь имел /usr/local/zend/binего PATH, чтобы он мог выполнять скрипт в cron as www-data.

Как добавить /usr/local/zend/binв PATH, чтобы www-dataможно было запускать файлы в /usr/local/zend/bin?

Ответы:


40

Первое место, где установлен PATH /etc/login.defs. Есть настройка для root и настройка для всех остальных.

Еще одно место, где вы можете определить переменные среды /etc/environment. Эти настройки будут применяться ко всем (вы не можете написать произвольный код оболочки).

Третье место, где вы можете определить переменные среды - это /etc/profile. Там вы можете написать произвольный код оболочки. Если вам нужен пользовательский параметр, существует соответствующий файл для каждого пользователя ~www-data/.profile. Но это будет применяться только к консольным интерактивным входам в систему; в частности, это не будет применяться к заданиям cron, если они не имеют явного источника /etc/profile.

Если вам нужен только этот PATHпараметр в пользовательском crontab, вы можете написать его в начале crontab. Обратите внимание, что вам нужен полный список ( PATH=/usr/local/bin:/usr/bin:/bin:/usr/local/zend/bin), вы не можете использовать подстановку переменных ( PATH=$PATH:/usr/local/zend/binтам работать не будет).


---- как вы перезагрузите, например, /etc/login.defs?
MrCalvin

@MrCalvin, войдя в систему.
Жиль "ТАК - перестань быть злым"

1
Есть ли причины, /etc/login.defsкоторые будут игнорироваться? Я обновил ENV_PATHи отображаю $ PATH при загрузке .bashrc. Где-то посередине он либо изменяется, либо не обновляется, поскольку отображает старое значение. Я перезагрузил компьютер - так что это не так.
Аннан

@ Аннан Скорее всего, это где-то меняется. Обратите внимание, что мой ответ был написан в 2010 году, до Systemd; если ваша система использует systemd, она может иметь свой собственный способ определения PATHв дополнение или вместо других способов.
Жиль "ТАК - перестань быть злым"

8

Чтобы установить путь для всех пользователей, кроме root, отредактируйте /etc/profileили /etc/enviroment. Для пользователя root или отдельного пользователя отредактируйте их .bashrcили .bash_profileв их домашних каталогах соответственно. Добавьте PATH=$PATH:/new/location/.


1

Чтобы просто установить var для всех пользователей, но при этом не обременять себя profile, вы можете добавить свой собственный небольшой скрипт в /etc/profile.dкаталог:

echo 'PATH="/usr/local/zend/bin:$PATH"' > /etc/profile.d/zend_path.sh

Тогда переселись.


1

nano / etc / profile

Добавьте эти строки в конец файла:

экспорт JAVA_HOME = / opt / jdk-12.0.1

export MAVEN_HOME = / opt / apache-maven-3.6.1

export M2_HOME = / opt / apache-maven-3.6.1

экспорт M2 = / opt / apache-maven-3.6.1 / bin

экспорт PATH = $ JAVA_HOME / bin: $ M2: $ PATH

Сохраните файл. Перезапустите или используйте следующую команду:

источник / etc / profile

Проверьте свои настройки:

echo $ JAVA_HOME

javac - версия

Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.