2017-10-19 10 views
0

Je voudrais être capable de créer un alias de mon script en l'appelant avec un argument.Créez un alias du script en appelant le script avec un argument: ./myscript alias

$ ./devbox alias 
$ devbox <other command of my script> 

Voici le code de mon script bash:

#!/bin/bash 

shopt -s expand_aliases 

aliasDevbox() 
{ 
    alias devbox="./devbox" 
} 

parseCli() 
{ 
    command=$1 

    case "$command" in 
    "alias") aliasDevbox 
    ;; 
    esac 
} 

parseCli "[email protected]" 

Il est en fait ne fonctionne pas: command not found

(je sais que si mon code alias devbox="./devbox" était au début de mon script, je serait capable de l'appeler de cette façon source ./devbox et cela fonctionnerait.)

Merci!

+0

Ce n'est pas le travail du script de définir comment quelqu'un peut l'appeler; C'est soit un problème de déploiement ou la responsabilité de l'utilisateur particulier. – chepner

Répondre

3

Cela ne fonctionnera pas et ne peut pas fonctionner car ./devbox est un processus fils de votre shell et les processus enfants ne peuvent pas définir d'alias dans les shells parents. (De même, ils ne peuvent pas non plus modifier les variables d'environnement.)

Je peux suggérer des solutions, mais en prenant du recul, est-ce vraiment nécessaire? En règle générale, les utilisateurs définissent des alias dans un script de connexion tel que .bashrc afin que les alias soient automatiquement disponibles dans tout nouveau shell qu'ils démarrent. Ma suggestion est simplement d'écrire une documentation suggérant que les utilisateurs créent un alias pour votre outil pour le rendre plus facile à utiliser.