El alias de .bash_profile no se refleja en todo el sistema

El alias de .bash_profile no se refleja en todo el sistema

Tengo algunas configuraciones de ruta y alias en .bash_profile, y los estoy exportando.

Por ejemplo:

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

Y quiero usarmyrtgcccompilar programas en C ya sea desde la terminal o desde Eclipse usando el comando gcc; Espero que el sistema funcione myrtgcc somfile.c -o output.

Sin embargo, éste no es el caso. Incluso después de agregar el alias anterior .bash_profiley reiniciar el sistema (o usar source .bash_profile), los cambios no se reflejan: si abro la terminal y escribo which gcc, obtengo /usr/bin/gccy cuando eclipse usa el comando "GCC", vuelve a invocar el mismo /usr/bin/gcc.

¿Cómo hago?myrtgccpredeterminado en todo el sistema, para comandogcc

Respuesta1

Te estás confundiendo por algunas cosas:

  1. whichno refleja alias. Entonces, cuando intentes verificar si se creó un alias, usarlo whichno te ayudará. En su lugar, ejecute aliassin argumentos; mostrará todos los alias vigentes. Ejemplo:

    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. Los alias afectan al caparazón, no a otras cosas. Cuando make, eclipse, etc. intenten ejecutar gcc, los alias de shell no importarán. También puede exportar sólo variables, no alias. Aquí hay un ejemplo (de nuevo con ese alias foo) de Perl intentando ejecutarlo:

    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. La mayoría de las cosas que compilan ejecutan cc, c++, etc., no gcc. Entonces, incluso si hubieras anulado gcc, probablemente no habría funcionado.

Entonces, ¿cómo lograr esto?

El mejor enfoque es decirle a make, etc. qué compilador usar:

make CC=/path/to/myrtgcc target

También puede pasar eso en el entorno cuando ejecuta /.configureprogramas que usan autoconf.

El segundo enfoque es crear scripts de shell simples llamados gcc, cc, etc. en (por ejemplo) ~/biny colocarlos primero en su ruta. Los scripts se verían así:

#!/bin/sh
exec /path/to/myrtgcc "$@"

y los pondrías primero en PATH usando algo como esto en tu .bashrc:

PATH="$HOME/bin:$PATH"
export PATH

Respuesta2

Lea la documentación de su shell. Hay dos tipos de perfiles. .bash_profile se ejecuta cuando ya ha iniciado sesión y hace algo como abrir una nueva terminal. El otro tipo de perfil se utiliza cuando inicia sesión inicialmente en el sistema y, curiosamente, se llama perfil de inicio de sesión. Para hacer lo que quieres hacer, intenta poner tus cosas en .profile

información relacionada