O alias de .bash_profile não é refletido em todo o sistema

O alias de .bash_profile não é refletido em todo o sistema

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_profilee 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/gcce 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:

  1. whichnão reflete aliases. Então, quando você está tentando verificar se um alias foi criado, usar whichnão irá ajudá-lo. Em vez disso, execute aliassem 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]$
    
  2. Os aliases afetam o shell, não outras coisas. Quando make, eclipse, etc. tentam executar gcc, 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
    
  3. A maioria das coisas que compilam executa cc, c++, etc., não gcc. Portanto, mesmo se você tivesse substituído gcc, 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 /.configureprogramas que usam o autoconf.

A segunda abordagem é criar scripts de shell simples chamados gcc, cc, etc. (por exemplo) ~/bine 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

informação relacionada