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.
1 | #!/bin/sh
|
2 | |
3 | PATH="/home/abc/CodeSourcery/Sourcery_G++_Lite/bin:${PATH}" |
4 | |
5 | exec eigentliches-programm "$*" |
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!
Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.