Je suis en train d'exécuter la ligne suivante du script bash sous Mac OS X 10.6.4 (de this question):Mac OS X - bash extension de chemin par défaut ou bug
$ export EDITOR='mvim -f -c "au VimLeave * !open -a Terminal"'
Hélas, ce que je reçois est quelque chose d'inattendu:
$ echo $ EDITOR
mvim -f -c "VimLeave fille au bureau Documents Logithèque Films musique Images bin Sites publics ouverts Terminal -a!"
Le résultat attendu serait:
$ echo $ EDITOR
mvim -f -c "au VimLeave *! Ouvrir -a Terminal"
La façon de résoudre ce problème à cela est de mettre noglob
, à savoir exécuter set -f
immédiatement avant la export
affectation. Cependant, la question qui se pose est de savoir si c'est le comportement attendu sous Mac OS X, car (parce que noglob
est unset par défaut, à savoir set +f
) ou parce qu'il ya un bogue dans bash
sous Mac OS X.
La version de bash est:
$ bash --version GNU bash, version 3.2.48(1)-release (x86_64-apple-darwin10.0) Copyright (C) 2007 Free Software Foundation, Inc.
il peut y avoir une aide par le biais de la page 329 du A practical guide to Unix for Mac OS X users
: « à moins noglob (page 320) est activée, les exécute shell [d'extension pathname] lorsqu'il rencontre une référence de fichier ambigu - un jeton contenant l'un des caractères non indiqués &,?, [, ou]. ". Cependant, étant donné que le *
globbed est entre guillemets, la question demeure: le comportement est-il un paramètre par défaut de bash, ou un bogue?
Ceci est juste une curiosité, mais je serais reconnaissant pour toutes les pensées et les commentaires que vous pourriez avoir.
Brian
Ceci est encore étrange: que \ * est * toujours entre guillemets * (les guillemets doubles) pour la commande echo. 'a = 'abc" * "xyz'; echo $ a' ne s'étend pas pour moi dans bash ou dash; en fait, il inclut les citations comme deuxième argument. –
Remarque: Je ne suis pas en train de tester sur OS X mais je cours bash 4.1.5; il semble qu'il y ait probablement une option shell différente qui explique ce comportement, mais je ne le trouve pas. –
@Roger, consultez la mise à jour, j'espère que cela va l'expliquer. – paxdiablo