Hallo,
ich habe folgendes Problem mit CodeSourcery und Ubuntu 64Bit:
Wenn ich 'source ~/.bash_profile' im Terminal-Fenster eingebe, dann wird
'arm-none-eabi-gcc' gefunden und ausgeführt - anderfalls nicht. Wie
bekomme ich den Pfad standardmäßig 'geladen'?
Das Problem schlägt nämlich auch auf Eclipse über. Dort werden
Compiler/Linker von CodeSourcery überhaupt nicht gefunden!
Wer weiß, wie ich das zusammenbekomme?
Gruß
Bei mir werden die folgenden zwei Dateien ausgeführt beim öffnen eines
neuen Terminalfensters (Ubuntu 10.10 32bit)
/etc/bash.bashrc
$HOME/.bashrc
Schau mal, was Du im .bashrc hast, und wenn es leer ist, mach aus dem
.bash_profile das .bashrc, wenn nicht, führe den Inhalt zusammen, so
dass Du nur noch das .bashrc hast.
Daniel
Danke Daniel für die schnelle Antwort.
Ich als Windows-User hab das jetzt mal zusammengeführt indem ich einfach
alles aus .bash_profile nach .bashrc kopiert habe:
PATH="/home/abc/CodeSourcery/Sourcery_G++_Lite/bin:${PATH}"
export PATH
Und es funktioniert tatsächlich! Nicht nur, dass es im Terminal geht,
nein auch in Eclipse!! Ich probiere schon seit 2 Stunden rum -
wenigstens was zu Linux gelernt.
Danke Dir nochmal!
Gruß
Die .bash_profile wird von einer Login-Shell ausgeführt, die .bashrc von
jeder gestarteten Shell (bzw. natürlich von der bash, andere Shells
verwenden diese Namen nicht).
Zweckmäßigerweise landet alles, was pro Login nur einmal ausgeführt
wird, in der .profile. Problem bei der grafischen Oberfläche ist halt,
dass der Login nicht über die Shell geht, welche Skripte da eingelesen
werden hängt von der Konfiguration (des Session-Typs) ab.
Das Problem mit PATH in der .bashrc ist, dass die eben immer gesetzt
wird wenn eine (interaktive) bash gestartet wird. Du kannst die Variable
also nicht in einer Shell ändern und erwarten, dass sie in einer daraus
gestarteten Shell noch den selben Wert hat.
Welcome to Linux ;-)
Die Dateien /etc/profile, $HOME/.profile und $HOME/.bash_profile werden
nur durchlaufen, wenn Du dich direkt über ein Terminal oder über
das Netz auf einem Unix-Rechner anmeldest.
Dann wird die BASH als sogenannte Login-Shell gestartet, und nur
dann werden diese Scripte durchlaufen.
Auf einem Deskopt-PC mit einer GNOME oder KDE als Oberfläche, wird beim
Start eines neuen Terminals die darin gestartet "/bin/bash"
normalerweise
nicht mit der Option "-l" oder "--login" gestartet.
Du kannst das aber erzwingen, indem Du irgendwo in den Tiefen von
GNOME oder KDE den Aufruf des Terminals anpasst, und dort die Loginshell
Option für die bash setzt.
Habe ich aber noch nie gebraucht, ich packe einfach alles in das
.bashrc und gut.
Wie immer im Leben ist es ziemlich simpel, wenn man es mal kapiert
hat ;-)
Also wenn ich Dich richtig verstanden habe Andreas, dann ist das, was
ich gemacht habe nicht die beste Lösung, da ich mir die PATH-Variable
sozusagen immer wieder überschreibe.
Im Grunde geht es mir auch nur darum, dass Eclipse den Pfad kennt, bzw.
der Pfad von CodeSourcery global bekannt gemacht wird.
Ich habe auch schon versucht (laut Internet) den Pfad mit 'sudo gedit
/etc/environment/' einzufügen. Das funktioniert aber nicht (Eclipse
findet den gcc trotzdem nicht)!
Frage: wie mach ich das also am Besten?
Gruß
Windows-User schrieb:> Ich habe auch schon versucht (laut Internet) den Pfad mit 'sudo gedit> /etc/environment/' einzufügen. Das funktioniert aber nicht (Eclipse> findet den gcc trotzdem nicht)!
Stimmt, /etc/environment habe ich noch vergessen. Die wird aber auch nur
beim Login gelesen, also nur Ändern reicht nicht, da musst du dich schon
einmal abmelden und neu einloggen.
Windows-User schrieb:> Im Grunde geht es mir auch nur darum, dass Eclipse den Pfad kennt, bzw.> der Pfad von CodeSourcery global bekannt gemacht wird.
Aber für sowas schreib ich mir gern mal einen winzigen Shell-Wrapper der
nur für dieses Programm Variablen setzt. Ich hab es halt gern
aufgeräumt.
Das in eine Datei, ausführbar machen (chmod a+x programm.wrapper), an
eine passende Stelle im Pfad kopieren (etwa /usr/local/bin) und statt
eigentliches-programm aufrufen. Das "$*" sorgt dafür, dass alle
Kommandozeilen-Argumente 1:1 weiter gereicht werden, also ist die
Benutzung des Wrappers wirklich identisch zum Original.
/etc/environment funktioniert doch. Aber wie Andreas schreibt muss man
sich ab- und anmelden.
Ich habs auch gerne aufgeräumt. Den Shell-Wrapper schreib ich mir auch -
Danke!