Antworten:
Auf Debian und anderen Systemen, die PAM verwenden (was heutzutage die meisten von ihnen sind), können Sie Umgebungsvariablen (einschließlich PATH) in festlegen /etc/environment. Dies funktioniert für alle Anmeldemethoden, die das pam_envModul verwenden (entweder im authAbschnitt oder im sessionAbschnitt). unter Debian sollten das alle sein (zumindest diejenigen, die Möglichkeiten zum Anmelden und Ausführen von Befehlen bieten).
Der Standardpfad könnte /etc/profilewie in Joe, aber auch in festgelegt werden $HOME/.profile. Ich habe auch viele Pakete, die ich selbst kompiliert habe (mit dem üblichen Verfahren ./configure --prefix=/opt/<name>), installiert /opt. Um die Binärdateien /opt/<name>/binohne zusätzlichen Aufwand auszuführen , habe ich hinzugefügt
OPTDIR=/opt
for i in $OPTDIR/* ; do
BINDIR=$i/bin
if [ -d $BINDIR ] ; then
if [ -z $PATH ] ; then
PATH=$BINDIR
else
PATH=$BINDIR:$PATH
fi
fi
done
export PATH
zu meinem $HOME/.profilewas in deinem Fall wäre /etc/profile. Selbst wenn ich /optin Zukunft Pakete unter installiere, muss ich mich nicht um den Zugriff auf die zugehörigen Binärdateien kümmern, /opt/.*/binda der Pfad automatisch hinzugefügt wird $PATH.
Da die zusätzliche Software nicht erforderlich ist stabil bevorzugen i $HOME/.profileüber /etc/profile.
Eine kleine Bemerkung: wird /etc/.profilejeweils $HOME/profilenicht von Ihrer Standard-Shell ausgeführt, sondern von dash. Eine leichte Variante bash, die die Last während des Startvorgangs reduziert.
Xsession) als Quelle verwenden . Jetzt hat jeder untergeordnete Prozess des Display-Managers die definierte $PATHVariable. In den beiden beschriebenen Fällen funktioniert mein Ansatz definitiv und Sie können auf alle Binärdateien unter zugreifen /opt/.*/bin.
Ich habe die beste Antwort auf Serverfehler von Gilles gefunden :
Wie wird PATH für alle Benutzer in Debian festgelegt?
Der erste Ort, an dem PATH gesetzt 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 Ort, 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 Datei pro Benutzer~www-data/.profile. Dies gilt jedoch nur für interaktive Konsolenanmeldungen. Insbesondere gilt dies nicht für Cron-Jobs, es sei denn, sie stammen explizit/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. Sie können keine Variablensubstitution verwenden (PATH=$PATH:/usr/local/zend/binfunktioniert dort nicht).
/etc/profilenoch~/.profilewird nicht von einer Nicht-Login-Shell ausgeführt.