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):
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.
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 …
Und das beste: es funktioniert. Habe gerade testweise eine solche Datei mit “echo ‘Hello’” als Inhalt angelegt, wird anstandslos beim Starten des Terminals gemacht.
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…
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.
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?
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?
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.
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…
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… (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