487 votes

Comment créer un alias Bash permanent ?

Je voudrais créer un alias pour la commande rm afin d'avoir un message de confirmation après l'exécution de cette commande. Donc je crée un alias comme ceci alias rm='rm -i'. Mais autant que je sache, c'est un alias temporaire et il reste jusqu'à ce que vous fermiez le terminal.

Comme expliqué ici pour enregistrer l'alias de manière permanente, je dois exécuter les commandes ~/.bash_aliases ou ~/.bashrc dans le terminal et ajouter mon alias là-bas. Mais lorsque j'exécute ~/.bashrc, je reçois le message d'erreur suivant :

bash: /home/bakhtiyor/.bashrc: Permission denied

Lorsque j'exécute ~/.bash_aliases, je reçois un autre message d'erreur comme ceci :

bash: /home/bakhtiyor/.bash_aliases: Fichier ou répertoire inexistant.

Quel est le problème réel et comment puis-je le résoudre ?

2 votes

0 votes

alias rm='rm -i' ne résout pas le problème d'utiliser rm de manière hâtive

0 votes

Qu'en est-il d'Ubuntu dans WSL les gars ?

545voto

Rob Gray Points 1556

Pour créer un alias de manière permanente, ajoutez l'alias à votre fichier .bashrc

gedit ~/.bashrc

Ensuite, ajoutez votre alias en bas.

texte alternatif

Exécutez maintenant . ~/.bashrc dans votre terminal (il doit y avoir un espace entre le . et ~/.bashrc).

Maintenant, vous pouvez vérifier votre alias.

texte alternatif

6 votes

@karthick87 tu as écrit "Now execute . ~/.bashrc dans ton terminal (il doit y avoir un espace entre le . et ~/.bashrc.". Pourquoi cette étape est-elle nécessaire ?

5 votes

Que fait le premier '.' dans . ~/.bashrc ?

36 votes

@Geek @Zen "Exécuter" n'était pas le terme correct. Le point est équivalent à source. Avec . ~/.bashrc, vous sourcez votre bash. L'exécution du fichier démarrerait un processus enfant, exécuterait les commandes dans ce processus, puis reviendrait. Tout ce qui est fait dans le processus enfant n'a pas d'effet sur le processus parent (le bash à partir duquel vous avez exécuté). Au lieu de cela, le sourçage (avec le point) agit exactement comme si vous aviez écrit le contenu du fichier dans le terminal. C'est ce que vous voulez. .bashrc est sourcé à chaque fois que vous démarrez un bash. Si vous apportez des modifications, elles ne s'appliqueront pas tant que vous n'aurez pas démarré un nouveau bash ou sourcé manuellement.

310voto

Thomas Points 715

Il existe de nombreuses façons de créer un alias. Les façons les plus utilisées sont les suivantes :

  1. Ajoutez des alias directement dans votre fichier ~/.bashrc

    Par exemple : ajoutez ces lignes au fichier ~/.bashrc

    alias ll='ls -l'
    alias rm='rm -i'

    La prochaine fois (après vous être déconnecté/reconnecté, ou avoir exécuté . ~/.bashrc), lorsque vous tapez rm, la commande rm -i sera exécutée.

  2. La deuxième méthode vous permet de créer un fichier d'alias séparé, de sorte que vous n'ayez pas à les mettre dans .bashrc, mais dans un fichier de votre choix. Tout d'abord, éditez votre fichier ~/.bashrc et ajoutez les lignes suivantes s'ils n'existent pas déjà, ou décommentez-les s'ils existent :

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

    Sauvegardez et fermez le fichier. Ensuite, tout ce que vous avez à faire est de créer un fichier ~/.bash_aliases et d'ajouter vos alias là-bas, avec le même format spécifié dans la première méthode.

    Contenu de mon fichier ~/.bash_aliases :

    alias cs='cd;ls'

93 votes

+1 pour l'utilisation de ~/.bash_aliases.

0 votes

Oui, utiliser un autre fichier pour les alias est beaucoup plus propre, également portable entre les distributions. J'utilise ce fichier car certains alias ne sont pas suffisants et une fonction est nécessaire. Donc c'est beaucoup plus propre si vous utilisez un fichier pour cette tâche à la place. J'ai un autre alias -> alias alias="xdg-open ~/.bash_aliases && source ~/.bash_aliases", donc l'alias devient disponible lors de l'enregistrement, et si vous faites une erreur, il vous avertira.

0 votes

Quelque part après avoir ajouté l'alias tel que alias ls='ls -althr', certains des indicateurs donnés ne prendraient pas effet, dans ce cas le drapeau -t n'a pas pris effet. savez-vous pourquoi?

22voto

RHaguiuda Points 757

Il me semble que votre seul problème est simplement d'essayer d'exécuter .bashrc quand il n'est pas exécutable. Mais ce n'est pas la bonne façon de le faire ; chaque fois que vous apportez une modification à ce fichier, vous devriez "l'exécuter" avec la commande :

source ~/.bashrc

Sinon, il va simplement créer un nouveau shell, exécuter le fichier dans l'environnement du nouveau shell, puis supprimer cet environnement lors de sa sortie, entraînant ainsi la perte de votre modification. En sourçant le script, il s'exécute dans le shell actuel, donc il restera en vigueur.

Je suppose que la deuxième erreur était due au fait que bash_aliases n'existe pas. Ce n'est pas obligatoire, juste recommandé pour garder vos modifications séparées et organisées. Il n'est utilisé que s'il existe, et vous pouvez voir le test pour cela dans .bashrc :

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

Cela signifie que si le fichier ~/.bash_aliases existe, alors exécutez-le.

0 votes

~/.bash_aliases est mieux. askubuntu.com/questions/194111/…

1 votes

En utilisant la commande source, mes alias ont fonctionné. +1

4 votes

Juste pour compléter : Le point initial sur la ligne . ~/.bash_aliases a le même sens que la commande intégrée au shell source. Je trouve que c'est la bonne réponse, expliquant ce qui se passe.

17voto

Lorin Hochstein Points 11816

Le problème est que vous essayez d'exécuter un fichier non exécutable: Vous pouvez vérifier cela avec:

ls -la ~/.bashrc
-rw-r--r-- 1 nomutilisateur nomutilisateur 3596 2010-08-05 17:17 /home/pt001424/.bashrc

Remarquez qu'il n'y a pas de lettre "x - exécutable" dans la première colonne (permissions du fichier).

Les fichiers de profil ne sont pas des fichiers exécutables, au lieu de les exécuter, vous les chargez avec:

source /home/bakhtiyor/.bashrc

ou

. /home/bakhtiyor/.bashrc

12voto

user80638 Points 131
echo "alias vps='ssh -X user@example.com'" >> ~/.bashrc

C'est un exemple que je cherchais, une façon de taper quelques lettres dans le terminal ("vps") pour me connecter à distance à un serveur et activer le transfert X11 afin de pouvoir exécuter des applications graphiques telles que "gedit" via le réseau.

Peu importe la commande / commande aliasée, cette méthode avec la déclaration echo, les guillemets et le symbole pour ajouter la sortie d'une commande à un fichier (>>) fonctionne pour moi. Remplacez simplement ma commande par la commande alias dont vous avez besoin et entrez-la dans votre terminal.

0 votes

La citation ici est légèrement délicate. Dans cet exemple, utiliser des guillemets doubles ne pose aucun problème, mais si le texte entre les guillemets contient des signes de dollar, des barres obliques, etc., vous devrez comprendre comment l'interprète de shell les traite à l'intérieur des guillemets doubles. Vous pouvez passer aux guillemets simples à l'extérieur et aux guillemets doubles à l'intérieur, mais vous devrez ensuite toujours comprendre comment Bash traite les guillemets doubles dans la définition de l'alias.

SistemesEz.com

SystemesEZ est une communauté de sysadmins où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres sysadmins, poser vos propres questions ou résoudre celles des autres.

Powered by:

X