.bashrc chargement d'alias à partir d'un fichier différent

11

J'ai un fichier .bashrc, que je veux configurer pour qu'il lit les alias d'un fichier .aliases et les configure.

Actuellement, j'ai:

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

Mais lors de la connexion, je reçois:

-bash: alias: -fu: introuvable -bash: alias: $ USER ": introuvable

-bash: alias: -lart ": introuvable

Le fichier .aliases est comme ceci:

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

Vladimir
la source

Réponses:

13

Lorsque vous utilisez alias ${alias_line}, la variable est divisée en espaces, ignorant les règles de citation.

Il existe deux façons de résoudre ce problème:

  • Supprimez toutes les citations du fichier d'alias:

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

    et mettez la variable elle-même entre guillemets:

    alias "$alias_line"

    Cela fonctionne parce que dans bash, ll="ls -lart"et "ll=ls -lart"sont exactement équivalents.

  • Alternativement (c'est une manière meilleure et plus courante), ayez un fichier avec des aliascommandes et utilisez le .builtin (aka source) pour l'importer.

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

    puis dans votre ~/.bashrc:

    . ~/.aliases

La deuxième méthode est meilleure , car elle ne vous limite pas aux alias, mais permet également de définir des fonctions , beaucoup plus puissantes.

user1686
la source
C'est vrai. C'était une approche complètement fausse. Je l'ai fait moi-même en utilisant ces commandes: en ligne de lecture; faire écho "alias $ line" >> .aliases_full; done <.aliases Je viens de faire mv .aliases_full .aliases. ./.aliases #in .bashrc Merci quand même :)
Vladimir