Solution (originale dans les commentaires) : supprimer eval
à partir de la première ligne. Le problème pourrait Les données de l'enquête ont également été incluses dans l'un des scripts qui sont utilisés dans le cadre de l'enquête. source
d (dans les troisième et dernière lignes), mais il s'est avéré que ce n'était pas le cas.
Explication : eval
permet à l'interpréteur de commandes d'analyser cette commande deux fois. Techniquement, il passe par toutes les étapes habituelles lorsque l'interpréteur de commandes analyse une ligne de commande -- interprétation et suppression des guillemets et des caractères d'échappement, expansion des variables, etc -- puis transmet le résultat à la commande eval
comme arguments. La commande eval
(qui est intégrée à bash, et non un exécutable séparé) recolle ces arguments comme s'il s'agissait d'une commande, et exécute toutes les opérations d'analyse. à nouveau et exécute le résultat.
C'est presque toujours une mauvaise idée. L'analyse du shell est compliquée et désordonnée, et en faire plus ne fait qu'augmenter la complication et le désordre. Malheureusement, les gens l'utilisent parfois comme une sorte de solution "frapper avec un plus gros marteau", et cela fonctionne à peu près aussi bien que l'on s'attend à ce que frapper les choses avec un plus gros marteau fonctionne.
Dans ce cas particulier, je pense que ce qui se passe, c'est qu'avant que ce script ne s'exécute, PATH
est réglé sur quelque chose comme "/usr/local/bin:/usr/bin:/bin:/usr/sbin:/Applications/Something Workbooks.app/Contents/SharedSupport/path-bin" (où "Something" est un mot différent, mais je ne connais pas le nom spécifique de l'application). L'interpréteur de commandes prend ceci :
eval export PATH="/Users/rachelromine/.rbenv/shims:${PATH}"
Supprime les guillemets et développe ${PATH}
et transmet le résultat à eval
qui s'exécute :
export PATH=/Users/rachelromine/.rbenv/shims:/usr/local/bin:/usr/bin:/bin:/usr/sbin:/Applications/Something Workbooks.app/Contents/SharedSupport/path-bin
Comme les guillemets ont été supprimés lors de la première analyse, l'espace au milieu du nom de l'application est traité comme un séparateur entre les arguments (plutôt que comme une partie d'un nom de fichier), de sorte que l'élément export
La commande définit PATH
vers "/Users/rachelromine/.rbenv/shims:/usr/local/bin:/usr/bin:/bin:/usr/sbin:/Applications/quelque chose", puis, dans une opération sans aucun rapport, tente d'exporter une variable nommée "Workbooks.app/Contents/SharedSupport/path-bin"... ce qui n'est pas un nom de variable valide ("identificateur").
Quant à ce que cela eval
fait là en premier lieu : Je ne sais pas. Je ne vois pas comment il pourrait faire quelque chose de bien ici (bien que si ce n'était pas pour l'espace, il n'aurait pas fait de mal). Je suppose que c'est dans les instructions que vous avez suivies (ou dans un prototype de .bash_profile) pour installer rbenv. Ce qu'il faisait là Je n'en ai aucune idée.