Dans linux, si je mets une commande dans un script qui contient un alias, je vois qu'il n'est pas développé. Comment puis-je résoudre ce problème? J'utilise bash.alias dans un script
Répondre
Vérifiez ce poste, il a votre réponse: Alias inside script
Selon le l'TLDP page about aliases, vous devez utiliser la ligne shopt -s expand_aliases
dans votre code pour développer des alias. L'exemple ci-dessous a produit le résultat attendu, mais sans la ligne shopt juste imprimé « my_ls: command not found »:
#!/bin/bash
shopt -s expand_aliases
alias my_ls='ls -lrt'
echo "Trying my_ls"
my_ls
exit
intéressant, la page man implique même le besoin de shopt, mais pour bash 3.2.39 elle est activée par défaut. – mvds
Si vous voulez que vos alias shell soient disponibles dans un script, vous devez inclure manuellement. Si elles sont définies dans ~/.bashrc
, mettre une ligne
. ~/.bashrc
après la ligne #!/bin/sh
dans votre script. Cela va exécuter le contenu de .bashrc dans le contexte de votre script.
Activation du mode posix (par exemple en appelant bash comme sh
ou avec la commande (set -o posix) 2>/dev/null && set -o posix
devrait faire l'affaire.
Même alors, il faut savoir que les alias sont développés car ils sont analysés, et l'ordre entre l'analyse et de l'exécution est mal définie. Par exemple
alias foo=echo; foo bar
ou
{
alias foo=echo
foo bar
}
va essayer de courir foo
car l'alias n'est pas encore défini au moment de l'analyse. En outre, certains shells analysent l'entrée entière d'un eval
ou .
(source) avant d'en exécuter un.
La seule manière portable et fiable d'utiliser des alias dans les scripts est de les définir, puis eval
ou .
le code qui les utilise.
- 1. Alias bash global du script
- 2. Attribution d'un alias à un alias dans Rails
- 3. Créer un alias avec l'argument
- 4. Comment intégrer script bash directement à l'intérieur d'un alias git
- 5. Filtrage sur un alias dans mysql
- 6. Comment définir un alias d'opérateur dans PostgreSQL?
- 7. Itinéraires imbriqués dans Rails avec un alias
- 8. Comment définir un alias à l'échelle du système pour un script Python?
- 9. alias nichant dans C#
- 10. paramètres Alias dans SSIS
- 11. Alias Javascript
- 12. création alias dans WAMP
- 13. Alias attr_reader dans Ruby
- 14. Dans mysql, pouvez-vous diviser un alias, par un autre?
- 15. Alias enum values dans schema.yml
- 16. Escaping * ombles dans alias cShell
- 17. alias champ
- 18. NHibernate: alias dans les SqlProjection
- 19. Puis-je créer un alias avec un paramètre?
- 20. makefile alias
- 21. alias makefile
- 22. MySQL Inclure un script dans le script
- 23. équivalent à alias Bash dans PowerShell
- 24. Comment créer un alias externe pour System.Core?
- 25. Comment ajouter un alias DNS par programme?
- 26. Création d'un alias pour un modèle instancié
- 27. Comment créer un alias de domaine (mappage)
- 28. Charger Java KeyStore pour un alias?
- 29. Comment anti-alias un modèle collada dans papervision3D?
- 30. Comment faire un alias de méthode dans groovy?
pouvez-vous montrer un exemple? Quelle commande? Comment l'alias-tu? – Cfreak
Vous devriez probablement utiliser des fonctions à la place des alias. Cependant, la réponse de GreenMatt [http://stackoverflow.com/questions/3424725/alias-in-a-script/3424805#3424805] est correcte. –