Você está ficando confuso com algumas coisas:
-
which
não reflete aliases. Então, quando você está tentando verificar se um alias foi criado, usarwhich
não ajudará você. Executealias
sem argumentos; Ele mostrará todos os aliases em vigor. Exemplo: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]$
-
Aliases afetam o shell, não outras coisas. Quando
make
,eclipse
, etc. tentam executargcc
, os aliases de shell não serão importantes. Você também pode exportar apenas variáveis, não aliases. Aqui está um exemplo (novamente com esse alias foo) do perl tentando executá-lo: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
-
A maioria das coisas que compila as coisas executam
cc
,c++
, etc., nãogcc
. Então, mesmo se você tivesse sobrescrito ogcc
, provavelmente não teria funcionado.
Então, como conseguir isso?
A melhor abordagem é informar make
, etc. qual compilador usar:
make CC=/path/to/myrtgcc target
Você também pode passar isso no ambiente ao executar /.configure
para programas que usam o autoconf.
A segunda abordagem é criar scripts de shell simples chamados gcc
, cc
, etc. em (por exemplo) ~/bin
e colocar isso em primeiro lugar em seu caminho. Os scripts seriam parecidos com isto:
#!/bin/sh
exec /path/to/myrtgcc "$@"
e você os colocaria primeiro no PATH usando algo assim em seu .bashrc
:
PATH="$HOME/bin:$PATH"
export PATH