.bashrc cargando alias de diferentes archivos

11

Tengo un archivo .bashrc, que quiero configurar para que lea los alias de un archivo .aliases y los configure.

Actualmente tengo:

# User specific aliases and functions
while read alias_line
do
        echo `alias ${alias_line}`
done < .aliases

Pero al iniciar sesión obtengo:

-bash: alias: -fu: no encontrado -bash: alias: $ USER ": no encontrado

-bash: alias: -lart ": no encontrado

El archivo .aliases es así:

psu = "ps -fu $ USER" ll = "ls -lart"
pico = 'nano'

Vladimir
fuente

Respuestas:

13

Cuando se usa alias ${alias_line}, la variable se divide en espacios, ignorando las reglas de comillas.

Hay dos formas de solucionarlo:

  • Elimine todas las citas del archivo de alias:

    ll=ls -lart
    psu=ps -fu $USER
    

    y poner la variable en comillas:

    alias "$alias_line"

    Esto funciona porque en bash, ll="ls -lart"y "ll=ls -lart"son exactamente equivalentes.

  • Alternativamente (esta es una forma mejor y más común), tenga un archivo con aliascomandos y use el .builtin (aka source) para importarlo.

    alias pico='nano'
    alias psu='ps x'
    alias ll='ls -lart'

    entonces en tu ~/.bashrc:

    . ~/.aliases

El segundo método es mejor , ya que no lo limita a los alias, sino que también permite definir funciones , que son mucho más potentes.

usuario1686
fuente
Así es. Fue un enfoque completamente equivocado. Lo hice yo mismo usando estos comandos: mientras leía la línea; do echo "alias $ line" >> .aliases_full; done <.aliases Entonces acabo de hacer mv .aliases_full .aliases. ./.aliases #in .bashrc Gracias de todos modos :)
Vladimir