Wie setze ich PATH für alle Benutzer in Debian?

25

Ich habe einen Debian-Lenny-Server und möchte, dass der www-dataBenutzer /usr/local/zend/binin seinem PATH ein Skript in cron as ausführt www-data.

Wie füge ich /usr/local/zend/binPATH hinzu, damit www-dataDateien ausgeführt werden können /usr/local/zend/bin?

Sandra
quelle

Antworten:

40

Der erste Ort, an dem PATH gesetzt wird, ist /etc/login.defs. Es gibt eine Einstellung für root und eine Einstellung für alle anderen.

Ein weiterer Ort, an dem Sie Umgebungsvariablen definieren können, ist /etc/environment. Diese Einstellungen gelten für alle (Sie können dort keinen beliebigen Shell-Code schreiben).

Eine dritte Stelle, an der Sie Umgebungsvariablen definieren können, ist /etc/profile. Dort können Sie beliebigen Shell-Code schreiben. Wenn Sie eine benutzerspezifische Einstellung wünschen, gibt es die entsprechende benutzerspezifische Datei ~www-data/.profile. Dies gilt jedoch nur für interaktive Konsolenanmeldungen. Insbesondere gilt dies nicht für Cron-Jobs, es sei denn, sie werden ausdrücklich als Quelle angegeben /etc/profile.

Wenn Sie diese PATHEinstellung nur in einer Benutzer-Crontab benötigen, können Sie sie am Anfang der Crontab schreiben. Beachten Sie, dass Sie die vollständige Liste ( PATH=/usr/local/bin:/usr/bin:/bin:/usr/local/zend/bin) benötigen und keine Variablensubstitution verwenden können ( PATH=$PATH:/usr/local/zend/binfunktioniert dort nicht).

Gilles 'SO - hör auf böse zu sein'
quelle
---- Wie läd man zB /etc/login.defs neu?
MrCalvin
@ MrCalvin Durch die Anmeldung.
Gilles '
1
Gibt es Gründe /etc/login.defs, die ignoriert würden? Ich habe aktualisiert ENV_PATHund gebe $ PATH zurück, wenn .bashrc geladen wird. Irgendwo in der Mitte wird es entweder geändert oder es wird nicht aktualisiert, da es den alten Wert anzeigt. Ich habe den Computer neu gestartet - so ist es nicht.
Annan
@Annan Die Chancen stehen gut, dass es irgendwo geändert wird. Beachten Sie, dass meine Antwort 2010 vor systemd geschrieben wurde. Wenn Ihr System systemd verwendet, hat es möglicherweise eine eigene Methode, um PATHandere Methoden zu ergänzen oder zu ersetzen.
Gilles 'SO- hör auf böse zu sein'
8

Um einen Pfad für alle Benutzer außer root festzulegen, bearbeiten Sie /etc/profileoder /etc/enviroment. Für root oder einen einzelnen Benutzer bearbeiten Sie deren .bashrcbzw. .bash_profilein deren Home-Verzeichnissen. Fügen Sie das hinzu PATH=$PATH:/new/location/.

David Rickman
quelle
1

Um var einfach für alle Benutzer festzulegen, ohne Ihre zu belasten profile, können Sie Ihr eigenes kleines Skript in ein /etc/profile.dVerzeichnis wie das folgende einfügen:

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

Dann melde dich neu an.

user3132194
quelle
1

Nano / etc / profile

Fügen Sie diese Zeile am Ende der Datei hinzu:

export 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

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

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

Speicher die Datei. Starten Sie neu oder verwenden Sie den folgenden Befehl:

source / etc / profile

Testen Sie Ihre Einstellungen:

echo $ JAVA_HOME

javac --version

Ryan Augustine
quelle