Wer setzt $PATH auf Red Hat?

Antworten
Nachricht
Autor
Tronar
Beiträge: 11
Registriert: 20. Jul 2009 9:00

Wer setzt $PATH auf Red Hat?

#1 Beitrag von Tronar » 28. Aug 2009 9:28

Hallo,

eigentlich sollte es eine Trivialität sein:
Ich wollte in /etc/profile eine angepaßte $PATH definieren für alle Benutzer des Systems.
Denkste! Irgendwo wird sie wieder überschrieben. Aber wo? Ich habe schon überall in bashrc, im profile.d-Verzeichnis usw. gesucht, finde aber nichts.
Mein Desktop ist ein einfacher FVWM, der über den gdm gestartet wird. FVWM ist definitiv harmlos, aber der gdm?
Mein Linux ist ein "Scientific Linux 5.3", das ist in etwa dasselbe wie Red Hat Enterprise.

Weiß jemand einen Rat?
Werner

PS: Das ist es, was ich inzwischen an Linux nicht mehr mag: Daß sich alle Distributionen immer mehr zukonfigurieren und nicht mehr zu durchblicken sind.

Benutzeravatar
Janka
Beiträge: 3580
Registriert: 11. Feb 2006 19:10

#2 Beitrag von Janka » 28. Aug 2009 12:42

/etc/profile wird nur von Login-Shells ausgeführt. Das sind üblicherweise nur die Shells, die von agetty gestartet werden, also die Textkonsolen. Die von dir gewünschte Ergänzung musst du in /etc/X11/xinit/... oder /etc/bash.bashrc einbauen.

Das hat auch nichts damit zu tun, dass sich 'alle Distributionen immer mehr zukonfigurieren'. Das war schon zu seligen Unix-Zeiten so.

Janka
Ich vertonne Spam immer in /dev/dsp statt /dev/null.
Ich mag die Schreie.

Tronar
Beiträge: 11
Registriert: 20. Jul 2009 9:00

#3 Beitrag von Tronar » 31. Aug 2009 7:54

Janka hat geschrieben:/etc/profile wird nur von Login-Shells ausgeführt. Das sind üblicherweise nur die Shells, die von agetty gestartet werden, also die Textkonsolen.
Hallo, Janka!

Du klingst ein wenig so, als ob Login-Shells nur seltene Spezialfälle wären. Aber natürlich sollte am Anfang jedes Login-Vorgangs eine Login-Shell stehen (oder anderweitig ein "Sourcen" dieser Startup-Dateien), auch beim Login über einen Display-Manager oder über ssh. Das entspricht ja auch den Tatsachen, schließlich werden alle anderen Umgebungsvariablen, die ich in der /etc/profile definiere, ja auch gesetzt. Nur meine $PATH wird eben überschrieben. Ich betrachte das durchaus als einen Bug im Startup-Vorgang.
Inzwischen habe ich herausgefunden, daß ein Wrapper-Skript für den Displaymanager, /etc/X11/prefdm, den Pfad überschreibt. Aber das ist nicht alles. Ich suche weiter.

Ein Verändern der X-Startup-Dateien, wie Du vorschlägst, wäre natürlich wenig sinnvoll, weil ich mich ja bisweilen auch anderweitig einlogge, z. B. über ssh. In der /etc/bash.bashrc sollten Umgebungsvariablen eher nicht gesetzt werden, weil man ja i. a. auch mal Shells mit unterschiedlichem Environment haben will, etwa in der Art:
PATH=/home/ich/speziell Superskript.ksh
Janka hat geschrieben:Das hat auch nichts damit zu tun, dass sich 'alle Distributionen immer mehr zukonfigurieren'. Das war schon zu seligen Unix-Zeiten so.
Oh doch, dabei bleibe ich: Das einstmals durchdachte Unix-Konzept wird immer undurchschaubarer. Ich habe schon Distributionen erlebt, bei denen aus der /etc/bash.bashrc bedingungslos die /etc/profile aufgerufen wird und dergleichen. Für xinit gilt leider Ähnliches.

Naja, ich werde mir irgendeine Krücke ausdenken müssen.
Danke jedenfalls für die Antwort!

Werner
Jabber-ID (remove "nix"): "W.Schenixinast@web.de"

Benutzeravatar
hastifranki
Beiträge: 259
Registriert: 06. Mai 2006 19:58

#4 Beitrag von hastifranki » 31. Aug 2009 16:27

Hallo Werner,

die Unterscheidung in login und non-login shell ist schon i.O.:

www.linuxfromscratch.org/blfs/view/stab ... ofile.html

oder

info2html.sourceforge.net/cgi-bin/info2html-demo/info2html?(bash.info.gz)

(unter Bash Features -> Bash Startup Files)

Viele Grüße
Frank

Tronar
Beiträge: 11
Registriert: 20. Jul 2009 9:00

#5 Beitrag von Tronar » 02. Sep 2009 13:09

hastifranki hat geschrieben:die Unterscheidung in login und non-login shell ist schon i.O.
Hallo, Frank!

Daß Janka etwas Falsches gesagt hätte, wollte ich ja nicht behaupten, sorry! Ich fand nur, daß sie an einer Stelle etwas übertrieb.

Im übrigen habe ich den Fehler gefunden:
Beim Login eines beliebigen (!) Users werden die Einstellungen in der /etc/profile überschrieben von - traraaa - dem, was in /root/.bashrc steht. Kein Scherz!

Für den Root hatte ich in seiner .bashrc eine eigene $PATH definiert, daher war ich selbst mit schuld.

Die Begründung ist einfach: Prozesse wie der gdm oder der sshd werden während des Bootens von einem Root-eigenen Bash-Skript gestartet, und bei einem Login wird das Environment eben nicht zurückgesetzt. Gerade letzteres halte ich aber für einen Bug. Erstens erbt der User beim Login ein Bash(!)-spezifisches Environment, selbst wenn er die C-Shell benutzt, und zweitens geht ihn das Root-Setup nichts an. Root könnte ja in seinen Umgebungsvariablen vertrauliche Dinge abgelegt haben.

Meine Frage an Alle: Testet das doch mal bei Eurer Distribution! Wer, außer den Red-Hat-Nutzern beobachtet das auch? Definiert eine ganz spezielle (*) PATH in der /root/.bashrc, stellt sicher, daß in der /etc/bashrc oder ~/.bashrc nichts daran geändert wird, bootet neu und loggt Euch ein! Welche $PATH seht Ihr dann? Die von Root oder die benutzereigene?

Neugierig
Werner

(*) Sie sollte aber verwendbar sein, d. h. alle wichtigen Systemverzeichnisse /bin:/sbin usw. enthalten. Sonst bootet Euer System nicht mehr.
Hängt einfach etwas dran: export PATH=$PATH:/nixlos
Jabber-ID (remove "nix"): "W.Schenixinast@web.de"

Benutzeravatar
Janka
Beiträge: 3580
Registriert: 11. Feb 2006 19:10

#6 Beitrag von Janka » 02. Sep 2009 15:20

Das scheint Fedora-spezifisch zu sein. Ich hab hier mit SuSE11.0 weder das Symptom, noch kann ich ein wildes Gehüpfe durch die rcfiles lokalisieren. Allerdings ist die /etc/profile auch bei SuSE relativ kompliziert, um z.B. auch bei ssh-Logins alle rcfiles zu erwischen.

Janka
Ich vertonne Spam immer in /dev/dsp statt /dev/null.
Ich mag die Schreie.

Antworten