[Relecteurs: notez que la question a été complètement réécrite après les votes serrés.]
J'ai récemment trouvé comment définir des alias pour bash dans le ~/.bashrc
.
Mais depuis que j'ai essayé cela, je vois les messages suivants chaque fois que j'ouvre un terminal.
J'ai ajouté quelques alias bash à mon J'essayais de créer des raccourcis en utilisant l'alias mais j'ai échoué et j'ai réussi à obtenir le message ci-dessous à chaque fois que j'ouvre un nouveau terminal.
bash: alias: UIC: not found
bash: alias: =: not found
bash: alias: Sudo openvpn --config ~/vpn/UIC-alopez78.ovpn: not found
bash: alias: mat: not found
bash: alias: =: not found
bash: alias: cd /home/alexisblopez/MATLAB/R2014a/bin/: not found
bash: alias: lab: not found
bash: alias: =: not found
bash: alias: ./matlab: not found
~$
C'est déroutant; ça ne dit pas erreur, mais parce que mes alias ne fonctionnent pas,
Je pense que j'ai fait quelque chose de mal avec eux - je ne sais pas quoi!
Vous avez probablement défini ces alias dans .bashrc
fichier:
alias UIC = 'Sudo openvpn --config ~/vpn/UIC-alopez78.ovpn'
alias mat = 'cd /home/alexisblopez/MATLAB/R2014a/bin/'
alias lab = './matlab'
Vous devez modifier .bashrc
et supprimer l'espace avant et après =
:
alias UIC='Sudo openvpn --config ~/vpn/UIC-alopez78.ovpn'
alias mat='cd /home/alexisblopez/MATLAB/R2014a/bin/'
alias lab='./matlab'
enregistrez vos modifications et exécutez source .bashrc
Les messages d'erreur semblent intéressants.
Les lignes
bash: alias: =: not found
c'est-à-dire: bash
nous donne le message que sa commande intégrée, alias
, lui a donné le message "not found" pour quelque chose nommé "="
.
Maintenant, alias
est impliqué, et il y a =
dans un endroit où il est confondu avec une commande. Pour le =
pour être traité comme une commande, il doit s'agir d'un seul mot, avec des espaces.
Et en regardant la syntaxe de la commande alias
(voir help alias
ci-dessous), c'est faux: le =
doit être utilisé sans espaces autour, comme ceci:
alias foo='bar baz'
Donc, l'idée est qu'il existe des définitions d'alias qui ont un espace supplémentaire autour de =
, qui sépare l'argument d'une ligne de commande de alias
en trois arguments.
Faisons une expérience: pouvons-nous reproduire votre message d'erreur comme celui-ci?
$ alias mat = 'foo bar'
bash: alias: mat: not found
bash: alias: =: not found
bash: alias: foo bar: not found
Oui!
La commande intégrée d'alias essaie d'afficher les définitions des trois alias mat
, =
, et foo bar
, comme demandé, et se plaint de ne pas les trouver.
Solution: lire help alias
, recherchez les définitions d'alias et supprimez l'espace autour de =
.
$ help alias
alias: alias [-p] [name[=value] ... ]
Define or display aliases.
Without arguments, `alias' prints the list of aliases in the reusable
form `alias NAME=VALUE' on standard output.
Otherwise, an alias is defined for each NAME whose VALUE is given.
A trailing space in VALUE causes the next Word to be checked for
alias substitution when the alias is expanded.
Options:
-p Print all defined aliases in a reusable format
Exit Status:
alias returns true unless a NAME is supplied for which no alias has been
defined.