web-dev-qa-db-fra.com

Alias: différence entre .bash_rc, .bash_aliases et / usr / local / bin

En jouant avec Terminal, j'ai remarqué qu'il y avait plusieurs façons de créer des alias permanents.

Je suis un débutant sous Linux, et d'après ce que je sais, je fais:

  1. Sudo ln -s /path/to/executable /usr/local/bin/desired_alias
  2. ajout de desired_alias = '/path/to/executable' à ~/.bashrc
  3. décommenter ces lignes dans ~/.bashrc:

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

    et mettre desired_alias = '/path/to/executable' dans le ~/.bash_aliases

tous ont le même effet.

Quelle est la différence entre la première et la seconde méthode?

8
Strae

Avec la première méthode, vous ne créez pas d'alias, vous créez un lien symbolique. Les liens symboliques sont des raccourcis pour les liens symboliques:

Les liens symboliques sont des fichiers qui agissent comme des pointeurs vers d’autres fichiers. [...] Un lien symbolique est un type spécial de fichier dont le contenu est une chaîne qui constitue le chemin d'un autre fichier, le fichier auquel le lien fait référence. En d'autres termes, un lien symbolique est un pointeur sur un autre nom et non sur un objet sous-jacent.

En savoir plus sur les liens symboliques ici et ici .

Avec la deuxième méthode, vous créez en fait un alias.

Les alias permettent à une chaîne de remplacer un mot par un mot lorsqu'il est utilisé comme premier mot d'une commande simple. Le shell maintient une liste d’alias pouvant être définis et non définis à l’aide des commandes intégrées alias et unalias (voir Shell COMMANDES BUILTIN ci-dessous). Le premier mot de chaque commande simple, s'il n'est pas cité, est vérifié pour voir s'il a un alias. Si c'est le cas, ce mot est remplacé par le texte de l'alias.

Vous pouvez définir un alias n'importe où, vous pouvez taper une commande et laisser le shell ( bash dans ce cas) l'interpréter, mais pour que l'alias être disponible dans d'autres shells, il doit être défini dans un fichier interprété par le shell au démarrage (démarrage du shell, pas du démarrage de l'ordinateur).

Pour bash, il s'agit de /etc/bash.bashrc (à l'échelle du système) et de ~/.bashrc. Ces fichiers sont interprétés lorsque le shell démarre en mode interactif (comme avec Terminal). Je ne vais pas mentionner les fichiers de profil car ils servent à des fins différentes.

Donc, vous voulez ajouter vos alias à ~/.bashrc pour les avoir disponibles dans chaque Shell interactif.

La méthode .bash_aliases accomplit exactement la même chose que de mettre les alias dans ~/.bashrc mais présente l'avantage supplémentaire d'être plus facile à être analysé et manipulé par des programmes.

Le . ~/.bash_aliases signifie la source (charge) _~/.bash_aliases_ dans le contexte du shell en cours d'exécution.

9
Li Lo