2 votes

Identifiant non valide au démarrage du terminal

J'obtiens cette ligne à chaque fois que j'ouvre mon terminal. Tout le reste semble fonctionner correctement mais j'aimerais que ce problème soit résolu car je ne pense pas que ce soit un bon signe.

Last login: Mon Feb 19 09:21:05 on ttys000
-bash: export: `Workbooks.app/Contents/SharedSupport/path-bin': not a 
valid identifier
Rachels-MacBook-Pro:~ rachelromine$

J'ai vérifié mon profil bash_profile et voici à quoi il ressemble

eval export PATH="/Users/rachelromine/.rbenv/shims:${PATH}"
export RBENV_SHELL=bash
source 
'/usr/local/Cellar/rbenv/1.0.0/libexec/../completions/rbenv.bash'
command rbenv rehash 2>/dev/null
rbenv() {
  local command
  command="$1"
  if [ "$#" -gt 0 ]; then
    shift
  fi

  case "$command" in
  rehash|shell)
    eval "$(rbenv "sh-$command" "$@")";;
  *)
    command rbenv "$command" "$@";;
  esac
}

# Setting PATH for Python 3.6
# The original version is saved in .bash_profile.pysave
PATH="/Library/Frameworks/Python.framework/Versions/3.6/bin:${PATH}"
export PATH

test -e "${HOME}/.iterm2_shell_integration.bash" && source 
"${HOME}/.iterm2_shell_integration.bash"

Je pense que j'ai dû installer quelque chose qui n'allait pas. Si vous avez une idée de ce que j'ai installé et qui pourrait être à l'origine de ce problème, ce serait extrêmement utile, mais je veux surtout corriger le problème d'identifiant valide qui apparaît à chaque fois que j'ouvre mon terminal.

1voto

Gordon Davisson Points 30215

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 Je n'en ai aucune idée.

LesApples.com

LesApples est une communauté de Apple où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres utilisateurs d'appareils Apple, poser vos propres questions ou résoudre celles des autres.

Powered by:

X