O alias de .bash_profile não é refletido no sistema

1

Eu tenho algumas configurações de caminho e alias em .bash_profile e estou exportando essas.

Por exemplo:

alias gcc=/abc/def/......./myrtgcc
export gcc

E eu quero usar myrtgcc para compilar programas em C a partir do terminal ou do Eclipse usando o comando gcc ; Espero que o sistema execute myrtgcc somfile.c -o output .

No entanto, este não é o caso. Mesmo depois de adicionar o alias acima em .bash_profile e reiniciar o sistema (ou usando 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 "GCC "comando novamente invoca o mesmo /usr/bin/gcc .

Como faço o myrtgcc padrão no sistema, para o comando gcc

    
por Vijay Rajanna 13.06.2014 / 17:59

2 respostas

3

Você está ficando confuso com algumas coisas:

  1. which não reflete aliases. Então, quando você está tentando verificar se um alias foi criado, usar which não ajudará você. Execute alias 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]$
    
  2. Aliases afetam o shell, não outras coisas. Quando make , eclipse , etc. tentam executar gcc , 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
    
  3. A maioria das coisas que compila as coisas executam cc , c++ , etc., não gcc . Então, mesmo se você tivesse sobrescrito o gcc , 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
    
por 13.06.2014 / 18:35
0

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ê está querendo fazer, tente colocar suas coisas em .profile

    
por 13.06.2014 / 18:35