Für den 11.04 habe ich eine Neuinstallation meines Systems durchgeführt. Ein Teil dieser Installation war die Installation von rvm , das ein rvm.sh
In steckt /etc/profile.d/
. Dies funktioniert nicht, da /etc/profile
(die jeweils + r in lädt /etc/profile.d/*.sh
) nicht geladen wird. Laut Dokumentation wird das Profil nur bezogen, wenn Bash in Login ausgeführt wird. Um dies zu überprüfen, habe ich aufgerufen bash --login
, wonach rvm
verfügbar war.
Dies hat bei mir in früheren Versionen von Ubuntu ohne Konfiguration funktioniert. Das heißt, bei einer Neuinstallation von 10.10 wird profile / .d korrekt als Quelle verwendet.
Meine Frage ist: Gibt es etwas, was ich falsch mache, oder gibt es neue Annahmen in Natty, die dies gebrochen haben? Meine aktuelle Problemumgehung ist source /etc/profile
in ~/.bashrc
(was schrecklich ist, da das Profil vor bashrc geladen werden soll, aber den Trick macht).
/etc/profile
(und damit die .d's). Vielen Dank für die Erklärung - es scheint so, als müsste das rvm-Volk nachverfolgt werden./etc/profile
und~/.profile
während der Anmeldung. Es ist seltsam, weil es immer mit älteren Versionen funktioniert hat. Ich denke, dies ist keine Lösung, sondern eine Umgehung.Es gibt jedoch eine Datei
/etc/bash.bashrc
, die von gnome-terminal gelesen wird und die "systemweite .bashrc-Datei für interaktive bash (1) -Shells" ist.Mein Aufruf an die rvm-Funktion
[[ -s "$HOME/.rvm/scripts/rvm" ]] && . "$HOME/.rvm/scripts/rvm"
ging dort rein und funktioniert einwandfrei für die paar Benutzer auf diesem System.quelle
/etc/bash.bashrc
. Nun, zumindest unter Debian / Ubuntu. Bash liest normalerweise keinen systemweiten bashrc; debian hat es dazu gepatcht.Für die Installation von RVM als Mehrbenutzer muss der Benutzer den folgenden Befehl ausführen:
(weil Ubuntu bei der Anmeldung nicht /etc/profile.d bezieht)
quelle
/etc/profile.d/
während der Anmeldung/etc/profile
als Quelle, da die Standardeinstellung die Dateien in einer Schleife durchläuft und als Quelle verwendet/etc/profile.d/
. Wenn dies jedochrvm.sh
Code für interaktive Shells wie Funktionen oder Aliase enthält,/etc/profile
ist es sinnlos , sie von beziehen zu lassen. Das Setup für interaktive Bash-Sitzungen muss aktiviert sein.bashrc
.Wenn Sie ZSH oder OH-MY-ZSH haben, lautet Ihr Profil / etc / zprofile
quelle
Ich habe eigentlich für diejenigen, die ihre Boxen nicht vollständig neu starten möchten, folgendes gefunden, es sei denn, es ist unbedingt erforderlich ...
Sie müssen nicht den gesamten Computer neu starten, damit die Änderungen
/etc/profile
wirksam werden. Sie müssen lediglich die XWindows Desktop-GUI neu starten, damit die Konfigurationsdaten erneut gelesen werden (so als ob sie im Rahmen eines systemweiten Neustarts gestartet würden).Für mich verwende ich xUbuntu, das LightDM verwendet, aber Sie können in jeder ausführbaren Datei Ihren aktuellen Desktop eintragen.
Erstens können Sie keinen Terminal-Emulator innerhalb der Desktop-GUI selbst verwenden, um dies zu tun (zumindest nicht bei LightDM). Sie müssen entweder SSH oder eine sekundäre Konsole verwenden (wenn Sie Strg + Alt gedrückt halten und eine F-Taste oder eine Zifferntaste drücken Sie sollten sich von Ihrem grafischen Desktop-Login oder Bildschirm zu einem einfachen Terminal-Fenster zurückziehen. Ich schlage auch vor, dass Sie Remotedesktop-Objekte wie VNC schließen, wenn Sie SSH verwenden (SSH kann natürlich verbunden sein, Sie möchten jedoch nicht, dass ein offenes VNC-Fenster die Anzeige 0 abruft, während es versucht, neu zu starten, da dies den Neustart möglicherweise zum Erliegen bringt Es wartet darauf, dass Sie die VNC-Sitzung beenden.
Ich mache das die ganze Zeit mit SSH und es ist ein großer Lebensretter, besonders wenn Sie nicht physisch an Ihrem Computer sind und nicht auf einen vollständigen Neustart und erneutes Verbinden warten möchten :-D
Jetzt der einfache Teil einmal in einem "sekundären" Terminal oder SSH-Problem: (Ja, dies wird Ihre aktuelle Sitzung beenden, stellen Sie sicher, dass Sie nichts dagegen haben, alle offenen Dokumente oder Arbeiten zu speichern.)
Warten Sie eine Minute, bis der Desktop beendet und wieder gestartet wird (dies kann einige Sekunden dauern, da die Dinge angehalten und beim Start erneut ausgeführt werden).
Das war's, wenn Sie jetzt entweder zu Konsole 0 zurückkehren oder VNC verwenden, um erneut eine Verbindung herzustellen, werden Sie von der Anmeldeaufforderung und der normalen Anmeldung begrüßt. Wenn Sie einen Terminalemulator öffnen und Ihren Befehl eingeben, sollten Sie dies jetzt tun Ich habe keine Probleme, da alles neu bezogen wurde, als ob Sie einen vollständigen Neustart der Maschine durchgeführt hätten.
Denken Sie daran, wenn Sie Ausgabe
sudo service lightdm restart
[oderstop
,start
, was] aus der Desktop - Umgebung in einen Terminal - Emulator mit dem Befehl wird nur dort hängen und nichts scheint zu geschehen. Dies liegt daran, dass Sie derzeit die Konsole (aka display) 0 verwenden und sie daher nicht vollständig herunter- und wieder hochfahren kann, da sie darauf wartet, dass der Desktop nicht verwendet wird, bevor der Befehl ausgeführt wird.Letzte Anmerkung: Ich habe nicht versucht, einen Neustart der Umgebung über den Desktop in einem Terminalemulator durchzuführen und dann zu einer anderen Konsole zu wechseln, die möglicherweise neu gestartet wird. Wenn Sie die Konsole jedoch bereits wechseln möchten, führen Sie den Befehl aus von dort aus sollte es sowieso sein?
quelle
Echo ". .profile" >> ~ / .bashrc
Und dann ein anderes Fenster öffnen. Ich denke, das ist der einfache Ansatz.
quelle
.profile
sind.bashrc
, würde dies für die meisten Benutzer zu einer Schleife führen.