.bashrc carica alias da file diverso


11

Ho un file .bashrc, che voglio impostare in modo che legga gli alias da un file .aliases e li configuri.

Attualmente ho:

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

Ma all'accesso ottengo:

-bash: alias: -fu: non trovato -bash: alias: $ USER ": non trovato

-bash: alias: -lart ": non trovato

Il file .aliases è così:

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

Risposte:


13

Quando si utilizza alias ${alias_line}, la variabile viene suddivisa in spazi, ignorando le regole di quotazione.

Esistono due modi per risolverlo:

  • Rimuovi tutte le offerte dal file alias:

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

    e metti la variabile stessa tra virgolette:

    alias "$alias_line"

    Questo funziona perché in bash ll="ls -lart"e "ll=ls -lart"sono esattamente equivalenti.

  • In alternativa (questo è un modo migliore e più comune), avere un file con i aliascomandi e usare il .builtin (aka source) per importarlo.

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

    quindi nel tuo ~/.bashrc:

    . ~/.aliases

Il secondo metodo è migliore , poiché non ti limita agli alias, ma consente anche di definire funzioni , che sono molto più potenti.


Giusto. È stato un approccio completamente sbagliato. L'ho fatto io stesso usando questi comandi: mentre leggi la riga; echo "alias $ line" >> .aliases_full; done <.aliases Ho appena fatto mv .aliases_full .aliases. ./.aliases #in .bashrc Grazie comunque :)
Vladimir
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.