
Ich habe einige Pfadeinstellungen und Aliase in .bash_profile und exportiere diese.
Zum Beispiel:
alias gcc=/abc/def/......./myrtgcc
export gcc
Und ich möchte verwendenAbonnierenum C-Programme entweder vom Terminal oder von Eclipse aus mit dem Befehl zu kompilieren gcc
; ich erwarte, dass das System läuft myrtgcc somfile.c -o output
.
Dies ist jedoch nicht der Fall. Selbst nach dem Hinzufügen des obigen Alias in .bash_profile
und dem Neustart des Systems (oder der Verwendung von source .bash_profile
) werden die Änderungen nicht angezeigt: Wenn ich das Terminal öffne und eingebe which gcc
, erhalte ich /usr/bin/gcc
und wenn Eclipse den Befehl „GCC“ verwendet, wird erneut dasselbe aufgerufen /usr/bin/gcc
.
Wie mache ichAbonnierenStandardmäßig im gesamten System, für den Befehlgcc
Antwort1
Ein paar Dinge verwirren Sie:
which
gibt keine Aliase an. Wenn Sie also prüfen möchten, ob ein Alias erstellt wurde,which
hilft Ihnen die Verwendung von nicht weiter. Führen Sie esalias
stattdessen ohne Argumente aus. Es werden alle gültigen Aliase angezeigt. Beispiel:anthony@Zia:~$ foo bash: foo: command not found anthony@Zia:~ [$?=127]$ alias foo='echo hi' anthony@Zia:~$ foo hi anthony@Zia:~$ which foo anthony@Zia:~ [$?=1]$
Aliase wirken sich auf die Shell aus, nicht auf andere Dinge. Wenn
make
,eclipse
usw. versuchen, auszuführengcc
, spielen Shell-Aliase keine Rolle. Sie können auch nur Variablen exportieren, keine Aliase. Hier ist ein Beispiel (wieder mit diesem Alias foo) von Perl, das versucht, es auszuführen:anthony@Zia:~$ perl -Mautodie=system -E 'system("foo")' "foo" failed to start: "No such file or directory" at (eval 6) line 12. at -e line 1
Die meisten Dinge, die kompiliert werden, werden ausgeführt mit
cc
,c++
, usw., nicht mitgcc
. Selbst wenn Sie also überschrieben hättengcc
, hätte es wahrscheinlich nicht funktioniert.
Also, wie lässt sich das erreichen?
Der beste Ansatz besteht darin, anzugeben make
, welcher Compiler usw. verwendet werden soll:
make CC=/path/to/myrtgcc target
Sie können dies auch in der Umgebung übergeben, wenn Sie es /.configure
für Programme ausführen, die Autoconf verwenden.
Der zweite Ansatz besteht darin, einfache Shell-Skripte mit den Namen gcc
, cc
, usw. zu erstellen ~/bin
und diese an den Anfang Ihres Pfads zu setzen. Die Skripte würden dann etwa so aussehen:
#!/bin/sh
exec /path/to/myrtgcc "$@"
und Sie würden sie an den Anfang in PATH setzen, indem Sie in etwa Folgendes verwenden .bashrc
:
PATH="$HOME/bin:$PATH"
export PATH
Antwort2
Lesen Sie Ihre Shell-Dokumentation. Es gibt zwei Arten von Profilen. .bash_profile wird ausgeführt, wenn Sie bereits angemeldet sind und etwas tun, z. B. ein neues Terminal öffnen. Der andere Profiltyp wird verwendet, wenn Sie sich zum ersten Mal beim System anmelden, und wird seltsamerweise als Anmeldeprofil bezeichnet. Um das zu tun, was Sie tun möchten, versuchen Sie, Ihre Sachen in .profile zu speichern.