Alias: diferencia entre .bash_rc, .bash_aliases y / usr / local / bin

9

Jugando con Terminal, noté que hay muchas formas de crear alias permanentes .

Soy un novato en Linux y, por lo que sé, hago:

  1. sudo ln -s /path/to/executable /usr/local/bin/desired_alias
  2. agregando desired_alias = '/path/to/executable'a~/.bashrc
  3. descomentando esas líneas en ~/.bashrc:

    if [ -f ~/.bash_aliases ]; then
        . ~/.bash_aliases
    fi

    y poner desired_alias = '/path/to/executable'en el~/.bash_aliases

Todos tienen el mismo efecto.

¿Cuál es la diferencia entre el primer y el segundo método?

Strae
fuente

Respuestas:

10

Con el primer método, no está creando un alias, está creando un enlace simbólico. Los enlaces simbólicos son la abreviatura de enlaces simbólicos:

Los enlaces simbólicos son archivos que actúan como punteros a otros archivos. [...] Un enlace simbólico es un tipo especial de archivo cuyo contenido es una cadena que es la ruta de acceso de otro archivo, el archivo al que se refiere el enlace. En otras palabras, un enlace simbólico es un puntero a otro nombre, y no a un objeto subyacente.

Lea más sobre enlaces simbólicos aquí y aquí .

Solo con el segundo método, de hecho, estás creando un alias.

Los alias permiten que una cadena se sustituya por una palabra cuando se usa como la primera palabra de un comando simple. El shell mantiene una lista de alias que se pueden establecer y desarmar con los comandos incorporados alias y unalias (ver SHELL BUILTIN COMMANDS a continuación). La primera palabra de cada comando simple, si no se cita, se verifica para ver si tiene un alias. Si es así, esa palabra se reemplaza por el texto del alias.

Puede definir un alias en cualquier lugar donde pueda escribir un comando y hacer que el shell ( bash en este caso) lo interprete, sin embargo, para que el alias esté disponible en otros shells, debe definirse en un archivo interpretado por el shell en el inicio (inicio de shell, no inicio de computadora).

Para bash estos son /etc/bash.bashrc(todo el sistema) y ~/.bashrc. Estos archivos se interpretan cuando el shell se inicia en modo interactivo (como cuando se usa Terminal). No voy a mencionar los archivos de perfil porque tienen un propósito diferente.

Por lo tanto, desea agregar sus alias para ~/.bashrctenerlos disponibles en cada shell interactivo.

El .bash_aliasesmétodo logra exactamente lo mismo que poner los alias ~/.bashrcpero tiene el beneficio adicional de ser más fácil de analizar y manipular por los programas.

La . ~/.bash_aliasesfuente de medios (carga) _~/.bash_aliases_en el contexto del shell actualmente en ejecución.

Li Lo
fuente
@lilo me ganaste el tutorial! +1
myusuf3
@gc Estoy golpeando el saco, así que enloquece :)
Li Lo
@lilo hahahha :)
myusuf3
1
Puede pensar que funciona igual, pero no lo es. Lea los materiales en enlaces simbólicos a los que me referí en mi respuesta. El enlace simbólico y los alias tienen diferentes propósitos y se crearon con diferentes propósitos en mente. Para darle un ejemplo de por qué los enlaces simbólicos no funcionan como alias, intente esto: defina un alias como: alias px = "ps axu". Ahora intenta lograr lo mismo con los enlaces simbólicos.
Li Lo
1
@Li Lo: he entendido la diferencia entre synlink y / usr / local / bin, pero mi pregunta (que tal vez esté un poco fuera de tema con la pregunta general) es: ¿para qué se usa exaclty / usr / local / bin?
Strae