Você está ficando confuso com algumas coisas:
-
whichnão reflete aliases. Então, quando você está tentando verificar se um alias foi criado, usarwhichnão ajudará você. Executealiassem 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