Alias ​​von .bash_profile wird nicht im gesamten System wiedergegeben

Alias ​​von .bash_profile wird nicht im gesamten System wiedergegeben

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_profileund 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/gccund 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:

  1. whichgibt keine Aliase an. Wenn Sie also prüfen möchten, ob ein Alias ​​erstellt wurde, whichhilft Ihnen die Verwendung von nicht weiter. Führen Sie es aliasstattdessen 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]$
    
  2. Aliase wirken sich auf die Shell aus, nicht auf andere Dinge. Wenn make, eclipseusw. versuchen, auszuführen gcc, 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
    
  3. Die meisten Dinge, die kompiliert werden, werden ausgeführt mit cc, c++, usw., nicht mit gcc. Selbst wenn Sie also überschrieben hätten gcc, 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 /.configurefür Programme ausführen, die Autoconf verwenden.

Der zweite Ansatz besteht darin, einfache Shell-Skripte mit den Namen gcc, cc, usw. zu erstellen ~/binund 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.

verwandte Informationen