Frage Wie setzt PATH für alle Debian-Benutzer?


Ich habe einen Debian Lenny Server, und ich möchte den www-data Benutzer zu haben /usr/local/zend/bin in seinem PATH, so kann es ein Skript in Cron als ausführen www-data.

Wie füge ich hinzu? /usr/local/zend/bin zu PATH, also www-data kann Dateien ausführen /usr/local/zend/bin ?


20
2017-08-02 18:26


Ursprung




Antworten:


Der erste Ort, an dem PATH eingestellt ist, 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).

Ein dritter Platz, an dem 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 Logins der Konsole. Insbesondere gilt dies nicht für Cron-Jobs, es sei denn, sie liefern explizit /etc/profile.

Wenn du das nur brauchst PATH in einem Benutzer Crontab setzen, können Sie es am Anfang der Crontab schreiben. Beachten Sie, dass Sie die vollständige Liste benötigen (PATH=/usr/local/bin:/usr/bin:/bin:/usr/local/zend/bin), können Sie keine Variablensubstitution verwenden (PATH=$PATH:/usr/local/zend/bin wird dort nicht funktionieren).


35
2017-08-02 19:11



- Wie lädst du z.B. /etc/login.defs? - MrCalvin
@MrCalvin Durch Einloggen. - Gilles
Gibt es Gründe dafür? /etc/login.defs würde ignoriert werden? Ich habe aktualisiert ENV_PATH und speichere $ PATH, wenn .bashrc geladen ist. 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 - das ist es nicht. - Annan
@Annan Die Chancen stehen gut, dass es irgendwo geändert wird. Beachten Sie, dass meine Antwort im Jahr 2010 vor systemd geschrieben wurde; Wenn Ihr System systemd verwendet, kann es einen eigenen Weg zur Definition haben PATH zusätzlich oder als Ersatz für andere Möglichkeiten. - Gilles


Um einen Pfad für alle Benutzer außer root festzulegen, bearbeiten Sie / etc / profile oder / etc / enviroment. Bearbeiten Sie für root oder einen einzelnen Benutzer ihre .bashrc- oder .bash_profile in ihren Home-Verzeichnissen. Fügen Sie PATH = $ PATH: / new / location / hinzu.


5
2017-08-02 18:41





Einfach var für alle Benutzer einstellen, während Sie nicht belasten profilekönnen Sie Ihr eigenes kleines Skript hinzufügen /etc/profile.d Verzeichnis wie folgt:

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

Dann melde dich erneut an.


0
2017-09-11 13:06