
Tenho poucas configurações de caminho e alias em .bash_profile e estou exportando-os.
Por exemplo:
alias gcc=/abc/def/......./myrtgcc
export gcc
E eu quero usarmyrtgcccompilar programas C do terminal ou do Eclipse usando o comando gcc
; Espero que o sistema funcione myrtgcc somfile.c -o output
.
No entanto, este não é o caso. Mesmo depois de adicionar o alias acima .bash_profile
e reiniciar o sistema (ou usar source .bash_profile
), as alterações não são refletidas: Se eu abrir o terminal e digitar which gcc
, recebo /usr/bin/gcc
e quando o Eclipse usa o comando "GCC", ele invoca novamente o mesmo /usr/bin/gcc
.
Como façomyrtgccpadrão em todo o sistema, para comandogcc
Responder1
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 irá ajudá-lo. Em vez disso, 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]$
Os aliases afetam o shell, não outras coisas. Quando
make
,eclipse
, etc. tentam executargcc
, os aliases do shell não importam. Você também pode exportar apenas variáveis, não aliases. Aqui está um exemplo (novamente com aquele alias foo) de 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 compilam executa
cc
,c++
, etc., nãogcc
. Portanto, mesmo se você tivesse substituídogcc
, provavelmente não teria funcionado.
Então, como fazer 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
programas que usam o autoconf.
A segunda abordagem é criar scripts de shell simples chamados gcc
, cc
, etc. (por exemplo) ~/bin
e colocá-los primeiro em seu caminho. Os scripts seriam mais ou menos assim:
#!/bin/sh
exec /path/to/myrtgcc "$@"
e você os colocaria primeiro em PATH usando algo assim em seu .bashrc
:
PATH="$HOME/bin:$PATH"
export PATH
Responder2
Leia a documentação do seu shell. Existem dois tipos de perfis. .bash_profile é executado quando você já está logado e faz algo como abrir um novo terminal. O outro tipo de perfil é usado quando você faz login inicialmente no sistema e, curiosamente, é chamado de perfil de login. Para fazer o que você deseja, tente colocar suas coisas em .profile