Как установить 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?

Sandra
источник

Ответы:

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

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

user3132194
источник
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 - версия

Райан Августин
источник