Jak ustawić PATH dla wszystkich użytkowników Debiana?

25

Mam serwer Debian Lenny i chciałbym, aby www-dataużytkownik miał go /usr/local/zend/binw PATH, aby mógł wykonać skrypt w cron as www-data.

Jak dodać /usr/local/zend/bindo PATH, aby www-datamożna było wykonywać pliki /usr/local/zend/bin?

Sandra
źródło

Odpowiedzi:

40

Pierwszym miejscem, w którym ustawiona jest PATH, jest /etc/login.defs. Jest ustawienie dla roota i ustawienie dla wszystkich innych.

Innym miejscem, w którym można zdefiniować zmienne środowiskowe, jest /etc/environment. Te ustawienia będą miały zastosowanie do wszystkich (nie można tam pisać dowolnego kodu powłoki).

Trzecie miejsce, w którym można zdefiniować zmienne środowiskowe, to /etc/profile. Tam możesz napisać dowolny kod powłoki. Jeśli potrzebujesz ustawienia specyficznego dla użytkownika, istnieje odpowiedni plik dla użytkownika ~www-data/.profile. Dotyczy to jednak tylko interaktywnych loginów konsoli; w szczególności nie będzie miało zastosowania do zadań cron, chyba że jawnie je pozyskają /etc/profile.

Jeśli potrzebujesz tylko tego PATHustawienia w crontab użytkownika, możesz zapisać je na początku crontab. Zauważ, że potrzebujesz pełnej listy ( PATH=/usr/local/bin:/usr/bin:/bin:/usr/local/zend/bin), nie możesz użyć podstawienia zmiennej ( PATH=$PATH:/usr/local/zend/binnie będzie tam działać).

Gilles „SO- przestań być zły”
źródło
---- jak przeładowujesz np. /etc/login.defs?
MrCalvin
@MrCalvin Logując się.
Gilles 'SO- przestań być zły'
1
Czy są jakieś przyczyny, /etc/login.defsktóre zostaną zignorowane? Zaktualizowałem ENV_PATHi echo $ PATH po załadowaniu .bashrc. Gdzieś w środku albo się zmienia, albo nie jest aktualizowany, ponieważ wyświetla starą wartość. Uruchomiłem ponownie komputer - więc to nie tak.
Annan
@ Annan Szanse są, że gdzieś się to zmienia. Zwróć uwagę, że moja odpowiedź została napisana w 2010 roku, przed systemd; jeśli twój system używa systemd, może mieć swój własny sposób na zdefiniowanie PATHw uzupełnieniu lub w zamian innych sposobów.
Gilles „SO- przestań być zły”
8

Aby ustawić ścieżkę dla wszystkich użytkowników oprócz root, edit /etc/profilelub /etc/enviroment. Dla użytkownika root lub indywidualnego użytkownika edytuj odpowiednio ich .bashrclub .bash_profilew ich katalogach domowych. Dodaj PATH=$PATH:/new/location/.

David Rickman
źródło
1

Aby po prostu ustawić var ​​dla wszystkich użytkowników bez obciążania profile, możesz dodać własny mały skrypt w /etc/profile.dkatalogu w ten sposób:

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

Następnie ponownie się zaloguj.

użytkownik3132194
źródło
1

nano / etc / profile

Dodaj tę linię na końcu pliku:

eksportuj JAVA_HOME = / opt / jdk-12.0.1

export MAVEN_HOME = / opt / apache-maven-3.6.1

eksport M2_HOME = / opt / apache-maven-3.6.1

eksport M2 = / opt / apache-maven-3.6.1 / bin

eksport PATH = $ JAVA_HOME / bin: $ M2: $ PATH

Zapisz plik. Uruchom ponownie lub użyj poniższego polecenia:

źródło / etc / profile

Sprawdź swoje ustawienia:

echo $ JAVA_HOME

javac --version

Ryan Augustine
źródło