web-dev-qa-db-fra.com

Comment créer un alias Bash permanent?

J'aimerais créer un alias pour la commande rm afin d'avoir un message de confirmation après avoir exécuté cette commande. Je crée donc un alias comme celui-ci alias rm='rm -i'. Mais pour autant que je sache, il s’agit d’un alias temporaire, qui perdure jusqu’à la fermeture du terminal.

Comme il est expliqué ici pour enregistrer l’alias de façon permanente, j’ai besoin d’exécuter les commandes ~/.bash_aliases ou ~/.bashrc dans le terminal et d’y ajouter mon alias. Mais quand j'exécute ~/.bashrc j'obtiens le message d'erreur suivant:

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

Lorsque je lance ~/.bash_aliases, un autre message d'erreur comme celui-ci s'affiche:

bash: /home/bakhtiyor/.bash_aliases: File or directory doesn't exist.

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

359
Bakhtiyor

Pour créer un alias de façon permanente, ajoutez-le à votre fichier .bashrc

gedit ~/.bashrc

Et puis ajoutez votre alias en bas.

alt text

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

Maintenant, vous pouvez vérifier votre alias.

alt text

402
karthick87

Il y a beaucoup de façons de créer un alias. Les moyens les plus utilisés sont:

  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 que vous tapez rm (après que vous vous êtes déconnecté/connecté ou que vous avez terminé . ~/.bashrc), 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’aurez pas à les mettre dans .bashrc, mais dans un fichier de votre choix. Commencez par éditer votre fichier ~/.bashrc et ajoutez les lignes suivantes si elles n'existent pas ou supprimez la mise en commentaire si elles existent:

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

    Enregistrez-le et fermez le fichier. Après cela, tout ce que vous avez à faire est de créer un fichier ~/.bash_aliases et d’y ajouter vos alias, avec le même format que celui spécifié dans la première méthode.

    Contenu de mon fichier ~/.bash_aliases:

    alias cs='cd;ls'
    
244
aneeshep

Il me semble que votre seul problème est simplement d’exécuter .bashrc alors que ce 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 devez "l'exécuter" à l'aide de la commande:

source ~/.bashrc

Sinon, il créera simplement un nouveau shell, exécutera le fichier dans l'environnement du nouveau shell, puis supprimera cet environnement lors de sa fermeture, perdant ainsi votre modification. En recherchant le script, il s'exécute dans le shell actuel, il reste donc actif.

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

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

Ceci dit que si le fichier ~/.bash_aliases existe, alors exécutez-le.

18
Marty Fried

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

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

Notez qu'il n'y a pas de lettre "x-exécutable" sur la première colonne (autorisations de 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
17
João Pinto
echo "alias vps='ssh -X [email protected]'" >> ~/.bashrc

C’est un exemple que je cherchais, un moyen de taper quelques lettres sur le terminal ("vps") pour vous connecter à distance à un serveur et activer le transfert X11 afin que je puisse exécuter des applications graphiques telles que "gedit" sur le réseau.

Quelle que soit la commande/commande avec alias, cette manière avec l'instruction echo, les guillemets et le symbole permettant d'ajouter le résultat d'une commande à un fichier (>>) fonctionne pour moi. Il suffit de remplacer ma commande par la commande d'alias dont vous avez besoin et de la saisir dans votre terminal.

7
user80638

si vous utilisez Ruby, vous pouvez installer aka en utilisant rubygem.

gem install aka2

usage

aka generate hello="echo helloworld" #add an alias
aka g hello="echo helloworld"  #add alias for lazy people

aka destroy hello #remove alias
aka d hello #remove alias for lazy people

le rubygem auto-source votre fichier de points afin que vous n'en ayez pas besoin. Vérifiez-le.

5
ytbryan

J'ai écrit cette fonction utile pour créer rapidement un nouvel alias, puis écrire la définition de cet alias dans ~/.bash_aliases (si elle existe) ou ~/.bashrc.

TIP: Assurez-vous que ~/.bash_aliases existe et est exécuté dans ~/.bashrc.

# -----------------------------------
#  Create a new permanent bash alias
#
#  @param $1 - name
#  @param $2 - definition
# -----------------------------------
new-alias () { 
  if [ -z "$1" ]; then
    echo "alias name:" && read NAME
  else
    NAME=$1
  fi

  if alias $NAME 2 > /dev/null > /dev/null; then
    echo "alias $NAME already exists - continue [y/n]?" && read YN
    case $YN in
      [Yy]* ) echo "okay, let's proceed.";;
      [Nn]* ) return;;
      * ) echo "invalid response." && return;;
    esac
  fi

  if [ -z "$2" ]; then
    echo "alias definition:" && read DEFINTION
  else
    DEFINTION="$2"
  fi

  if [ -f ~/.bash_aliases ]; then
    echo "alias $NAME=\"$DEFINTION\"" >> ~/.bash_aliases
  else
    echo "alias $NAME=\"$DEFINTION\"" >> ~/.bashrc
  fi

  alias $NAME="$DEFINTION"
}
4
blizzrdof77

Je suggère d'utiliser /etc/bash.bashrc

Vous pouvez ajouter une ligne à la fin de ce fichier.

alias ok="ping google.com"

Après avoir mis les alias par ligne, vous devez redémarrer ou reconnecter.

0
Fahad Ahammed

Si je me souviens bien, bashrca, ou avait, une ligne suggérant de ne pas l'utiliser directement pour les alias. La solution consiste à utiliser un fichier externe. Les alias fooet baront été ajoutés, mais pour ajouter bazname__, le fichier bashrcdoit être "obtenu" (ou ouvrez simplement un nouveau terminal). Exemple en tant que:

thufir@dur:~$ 
thufir@dur:~$ alias
alias alert='notify-send --urgency=low -i "$([ $? = 0 ] && echo terminal || echo error)" "$(history|tail -n1|sed -e '\''s/^\s*[0-9]\+\s*//;s/[;&|]\s*alert$//'\'')"'
alias bar='echo foo'
alias egrep='egrep --color=auto'
alias fgrep='fgrep --color=auto'
alias foo='echo foo'
alias grep='grep --color=auto'
alias l='ls -CF'
alias la='ls -A'
alias ll='ls -alF'
alias ls='ls --color=auto'
thufir@dur:~$ 
thufir@dur:~$ cat .bash_aliases 
alias foo='echo foo'
alias bar='echo foo'
alias baz='echo baz'

thufir@dur:~$ 
thufir@dur:~$ source .bashrc 
thufir@dur:~$ 
thufir@dur:~$ alias
alias alert='notify-send --urgency=low -i "$([ $? = 0 ] && echo terminal || echo error)" "$(history|tail -n1|sed -e '\''s/^\s*[0-9]\+\s*//;s/[;&|]\s*alert$//'\'')"'
alias bar='echo foo'
alias baz='echo baz'
alias egrep='egrep --color=auto'
alias fgrep='fgrep --color=auto'
alias foo='echo foo'
alias grep='grep --color=auto'
alias l='ls -CF'
alias la='ls -A'
alias ll='ls -alF'
alias ls='ls --color=auto'
thufir@dur:~$ 
thufir@dur:~$ baz
baz
thufir@dur:~$ 

maintenant, l'alias bazfonctionne. Je viens tout juste de me rendre compte qu'une réponse précédente avait mentionné cette technique, mais ils avaient enterré le lede.

0
Thufir