Bashrc auslesen

Moin erstmal!

Hab ne etwas speziellere Frage, die SuFu hat nix ergeben.

Ich nutze GnuOctave auf meinem Macbook und möchte Gnuplot die Ausgabe mit AquaTerm machen lassen. Dafür habe ich laut einer Step-by-Step-Anleitung auf
sarnesjo.org/2006/09/24/howto-in … x/#more-37

die ~/.bashrc folgendermaßen modifiziert (bzw neu erzeugt, vorher war sie nicht vorhanden):

export PATH=$PATH:/usr/local/bin
export GNUTERMAPP=/Applications/AquaTerm.app
export GNUTERM=aqua

Leider muss ich bei jedes Mal wenn ich einen neuen Terminal öffne die bashrc. mit ‘source .bashrc’ auslesen, bevor die Änderung wirksam wird. Das ist doch nicht der Sinn der Sache. Wieso wird die Datei ~/.bashrc nicht automatisch ausgelesen? Abhilfe?
Ich benutze Mac OS X 4.8 Tiger.

Vielen Dank im Voraus!

Moin! :bigsmile:

… und willkommen an Bord :flowers:

Hab’ grad mal die manpage zur bash angesehen… da steht was drin, daß die Option --norc standardmäßig verwendet wird, if the shell is invoked as sh, was immer das heißt. Kurz danach kommt noch ein Abschnitt über “Invocation”, demnach könnte das damit zusammenhängen, ob die Shell als “Login-Shell” invokiert(?) wird.

Vielleicht kannst du deine Befehle mal testweise in ~/.bash_profile (statt .bashrc) packen, die wird nämlich bei Login-Shells ausgelesen (wie gesagt, soweit ich die manpage verstehe. Andere Möglichkeit wäre, über die Einstellungen in Terminal (oben über’s Menü) die bash direkt per Befehl zu starten, nicht als Login-Shell.

/edit: vielleicht tut’s auch die systemweite /etc/profile …

Viel Erfolg,
nabla

Kann ich einfach eine .bash_profile in meinem home-Verzeichnis mit dem selben Inhalt wie oben erstellen und keinen störts?

Was ändert sich praktisch, wenn ich die bash direkt starte?

In /etc/profile würde ich eigentlich ungerne herumfummeln, weil das ja global ist. Man weiss ja nie…

Denke schon.

Und das beste: es funktioniert. :bigsmile: Habe gerade testweise eine solche Datei mit „echo ‚Hello‘“ als Inhalt angelegt, wird anstandslos beim Starten des Terminals gemacht.

Jou, klappt. Also kann ich doch auch die ~/bashrc komplett löschen, oder?

Jep. Zumal du sie ja selbst angelegt hast…

So, klappt prinzipiell.

Jetzt überlege ich allerdings, das ganze anders anzugehen und die Programme lieber über ‘fink’ zu installieren, da es generell alle Abhängigkeiten automatisch auflöst und auch ‘octave-forge’ korrekt mitinstalliert (ein Zusatzpaket, welches die Matlab-Kompatibilität erweiter).

Fink installiert allerdings alles in ein eigenes Verzeichnissystem /sw, um nicht in das System einzugreifen. Ich hätte die bereits installierten Programme Octave, Gnuplot und Aquaterm dann also doppelt auf der Platte.

Wie kann ich die Programme denn sauber wieder löschen, die mit der obigen ( sarnesjo.org/2006/09/24/howto-in … x/#more-37 ) Anleitung installiert wurden? Die liegen ja jetzt nicht im Programme-Ordner (ausser AquaTerm), und mir ist nicht ganz wohl dabei vn hand im UNIX-Dateisystem herumzulöschen… :frowning:

Moin,
deshalb packt’s Fink in /sw und DarwinPorts in /opt…

Wenn du was “händisch” in /3kleinbuschstaben frickels, musst du das auch “händisch” wieder raus basteln.

@nabla: sh ist die Systemshell, das es ja diverse gibt, kann man festlegen das bash sh ist. Also “sh laber.sh” “bash laber.sh” ausführt, dann gilt --norc.

Uli

OK, habs jetzt über Fink und Aquaterm ist default terminal. Muss aufrund einer Befehlserweiterung trotzdem immer nach starten des bash-Terminals

export GNUTERM=aqua

tippen, damit alles so läuft, wie es soll. Naiv wie ich bin, dachte ich mir, erzeuge ich mal eine .bash_profile mit dem einzigen Eintrag

export GNUTERM=aqua

dann sollte das ja jedesmal von selbst laufen. Pustekuchen, jetzt findet er ‘octave’ nicht mehr. Wo ist mein Denkfehler? Was muss noch in die .bash_profile?

Wo liegt denn octave?

Brauchst du evtl. noch den Pfad auf das Verzeichnis, wo octave zu finden ist? Analog zu
export PATH=$PATH:/usr/local/bin
was du vorher ja schon drin hattest?

Vorher lag octave ja auch im Pfad. Es liegt übrigens unter /sw/bin, das ist das Standardverzeichnis der Fink-Programme.

Erscheint denn /sw/bin im Pfad, wenn du

echo $PATH

eingibst?

Hab das Problem jetzt eingegrenzt:

Sobald ich überhaupt eine Datei .bash_profile anlege, verschwindet /sw/bin aus meinem Pfad, egal was drinsteht. Auch wenn sie leer ist. Lösche ich sie wieder und starte einen neuen Terminal, ist wieder alles ok und die Fink-Sachen sind wieder im Pfad.

Muss ich dass jetzt verstehen?

Schau mal, ob du im Home-Verzeichnis weitere (versteckte) Dateien hast, zum Beispiel .profile, und ob darin vielleicht der Pfad auf /sw/bin gesetzt wird. Ich meine mich daran zu erinnern, dass die Bash erst die globale /etc/profile durchgeht, und danach im Home-Verzeichnis in einer bestimmten Reihenfolge nach den persönlichen Profilen sucht, aber immer nur bis zur ersten Datei, die gefunden wird.

/edit: man bash schreibt:

…was diese Vermutung bestätigen würde. Da musst du dir ggf. alles nötige aus beiden Dateien (oder aus allen dreien?) zusammensuchen und in eine schreiben…

Yep, es existiert eine .profile mit folgendem Eintrag:

test -r /sw/bin/init.sh && . /sw/bin/init.sh

Und nu?

Kann ich meinen Wunschbefehl einfach drunter schreiben ohne andere böse Sachen zu bewirken?

Hab grad mal geguckt, was dieser test-Befehl macht:
im Prinzip nix weiter, als nachzusehen, ob /sw/bin/init.sh existiert, und wenn ja, führt er diesen Befehl aus…

Nächster Schritt wäre also, zu überprüfen, was dieses init-Skript macht und zu entscheiden, ob es wichtig ist. Aber vermutlich steht da gerade drin, dass der /sw/bin-Pfad gesetzt werden soll… :wink: (sowie weitere Dinge, die vermutlich für die Programme in /sw wichtig sind).

Insofern, ja, probier ruhig mal, die Befehle da mit reinzupacken und die .bash_profile dafür wieder zu löschen. Könntest natürlich auch umgekehrt diesen test-Befehl mit in die .bash_profile schreiben. Versuch macht kluch… viel schiefgehen kann ja eigentlich nicht. Vielleicht die Originalfiles mal irgendwo backuppen :smile:

Juchu, hab es einfach unter das test in die .profile geschrieben und es klappt! Danke Nabbilein!

Wie setze ich eigentlich Kommentare in diese Dateien? mit // wie in C++?

Ich glaube, mit # …bin mir aber nicht sicher.

:arrgw:

OK, Nabinator!