
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_profile
y reiniciar el sistema (o usar source .bash_profile
), los cambios no se reflejan: si abro la terminal y escribo which gcc
, obtengo /usr/bin/gcc
y 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:
which
no refleja alias. Entonces, cuando intentes verificar si se creó un alias, usarlowhich
no te ayudará. En su lugar, ejecutealias
sin 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]$
Los alias afectan al caparazón, no a otras cosas. Cuando
make
,eclipse
, etc. intenten ejecutargcc
, 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
La mayoría de las cosas que compilan ejecutan
cc
,c++
, etc., nogcc
. Entonces, incluso si hubieras anuladogcc
, 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 /.configure
programas que usan autoconf.
El segundo enfoque es crear scripts de shell simples llamados gcc
, cc
, etc. en (por ejemplo) ~/bin
y 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