J'utilise Ubuntu 10.04 et j'utilise upstart
pour la gestion des démons. Mon application d'entreprise est exécutée en tant que démon et doit être exécutée en tant que root en raison de divers privilèges. Ex. :
sudo start my-application-long-ID
sudo stop my-application-long-ID
etc
Je voudrais introduire un alias
pour abréger ces commandes comme quelque chose comme :
alias startapp='sudo start my-application-long-ID'
et exécutez-le en tant que startapp
et cela fonctionne mais je préférerais ne pas avoir sudo dans l'alias.
alias startapp='start my-application-long-ID'
ne fonctionne pas avec sudo startapp
, renvoyant sudo: startapp: command not found
.
Cependant, lorsque j'ai ajouté l'alias :
alias sudo='sudo '
sudo startapp
fonctionne maintenant mais je suis toujours curieux de savoir pourquoi sudo ignore les alias.
Réponse acceptée :
Je vois les informations ci-dessous à partir d'ici.
Lorsque vous utilisez sudo, utilisez l'extension d'alias (sinon sudo ignore vos alias)
alias sudo='sudo '
La raison pour laquelle cela ne fonctionne pas est expliquée ici.
Bash ne vérifie que le premier mot d'une commande pour un alias, tous les mots
après cela ne sont pas vérifiés. Cela signifie que dans une commande comme sudo ll, seul
le premier mot (sudo) est vérifié par bash pour un alias, ll est ignoré.
Nous pouvons dire à bash de vérifier le mot suivant après l'alias (c'est-à-dire sudo) en
ajoutant un espace à la fin de la valeur d'alias.