2012-03-20 8 views
16

¿Cómo puedo verificar en mi bashrc si ya se configuró un alias?¿Cómo puedo consultar mi bashrc si ya se configuró un alias?

Cuando fuente de un archivo .bashrc, que tiene un nombre de función, por ejemplo divertido, y mi entorno actual tiene un alias como divertido también.

He intentado unalias divertido, pero eso me dará un error que no se puede encontrar cuando mi entorno ya no tiene ese alias.

Así que en mi bashrc, en mi función de diversión quiero comprobar si se estableció el alias, luego lo quita.

Respuesta

22

Si lo que desea es asegurarse de que el alias no existe, simplemente unalias y redirigir su error a/dev/null como esto:

unalias foo 2>/dev/null 

Puede comprobar si un alias se establece con algo como esto:

alias foo 2>/dev/null >/dev/null && echo "foo is set as an alias" 

como se indica en la página de manual:

For each name in the argument list for which no value is sup- 
plied, the name and value of the alias is printed. Alias 
returns true unless a name is given for which no alias has been 
defined. 
8

sólo tiene que utilizar el comando alias como

alias | grep my_previous_alias 

Tenga en cuenta que puede utilizar realmente unalias, por lo que podría hacer algo como

[ `alias | grep my_previous_alias | wc -l` != 0 ] && unalias my_previous_alias 

que eliminará el alias si se ha establecido.

+0

He utilizado este para probar 'la' entre mis máquinas Mac y Linux. En mi .bash_profile en mac, tengo 'alias la = 'ls -GA' (porque G es color) y luego en mi' .bashrc' tengo 'función checkLa() {if [" $ (alias | grep la) "==" ls -GA "]; luego echo "mac usuario!"; return 0; fi echo "usuario de Linux!"; alias la = 'ls -A --color = auto'}; checkLa() '. Sabía que alias también devolvía todos los alias, ¡pero no pensé en eso! :RE – dylnmc

2

puede utilizar type para ver si el comando existe, o si es alias o no.

Devolverá el estado del error, si no se encuentra el comando.

Por ejemplo, estoy definiendo la siguiente alias:

$ alias foo="printf" 

continuación, comprobar los siguientes escenarios:

$ type foo >/dev/null && echo Command found. || echo Command not found. 
Command found. 

o específicamente para alias:

$ alias foo && echo Alias exists || echo Alias does not exist. 

o para comprobar si es un alias o un comando regular:

$ grep alias <(type foo) && echo It is alias. || echo It is not. 

Para verificar si el alias está definido en sus archivos rc, debe verificarse manualmente, p. por:

[ "$(grep '^alias foo=' ~/.bash* ~/.profile /etc/bash* /etc/profile)" ] && echo Exists. || echo Not there. 
1

Una buena solución específica de bash para verificar alias es usar la matriz BASH_ALIASES, p.:

$ echo ${BASH_ALIASES[ls]} 
0

Usted puede usar lo siguiente para hacer su archivo .bashrc más simple:

  1. Asegúrese de que existe un alias.
  2. Unalias it.
  3. definir la función

alias fun='' 
unalias fun 
fun() 
{ 
    # Define the body of fun() 
} 
Cuestiones relacionadas