0 votes

Pourquoi Terminal se plaint-il de "-bash : export : `PATH;' : not a valid identifier".

Lorsque je lance le terminal, j'obtiens l'erreur

-bash : export : `PATH;' : pas un identifiant valide

Pourquoi ?

J'ai regardé dans les deux fichiers qui Je pense bash utilise au démarrage, et je ne vois pas de problème :

/etc/profile

# System-wide .profile for sh(1)  

if [ -x /usr/libexec/path_helper ]; then  
        eval `/usr/libexec/path_helper -s`  
fi  

if [ "${BASH-no}" != "no" ]; then  
        [ -r /etc/bashrc ] && . /etc/bashrc  
fi  

~/.bash_profile

export PATH="$PATH:/usr/local/autoconf/bin"  
export PATH="$PATH:/usr/local/automake/bin"  
export VISUAL=vscodeeval $(/usr/libexec/path_helper -s)  

(N.B. Le dossier /usr/libexec/path_helper est binaire, et /etc/bashrc ne contient pas le texte 'PATH').

D'où vient l'erreur ? Je ne vois pas PATH; avec le point-virgule de fin dans l'un ou l'autre des profils de démarrage.

3voto

chepner Points 129

Regardez la sortie de path_helper -s :

$ /usr/libexec/path_helper -s
PATH="..."; export PATH;

(La valeur réelle attribuée à PATH n'est pas important ; je l'ai éludé ici).

La sortie est destinée à être exécutée avec eval comme c'est le cas dans /etc/profile . Le but est de fournir une valeur initiale pour la PATH puis définir l'attribut d'exportation sur le nom.

Dans votre .bash_profile vous l'exécutez inutilement à nouveau mais aussi de manière incorrecte, en permettant que la sortie soit utilisée comme arguments supplémentaires à une commande export commande. La ligne

export VISUAL=vscodeeval $(/usr/libexec/path_helper -s) 

est traité comme

export VISUAL=vscodeeval PATH="..."; export PATH;

sauf que les points-virgules sont traités comme des caractères littéraux, et non comme des terminaisons de commande. Ainsi, il essaie de faire ce qui suit :

  1. Définir VISUAL à vscodeval et définir l'attribut d'exportation sur VISUAL . Ce n'est pas grave.

  2. Définir PATH à une valeur initiale (se terminant par un point-virgule, ce qui n'est pas ce que vous voulez, mais la syntaxe ne pose pas de problème) et définit son attribut d'exportation.

  3. Définir l'attribut d'exportation sur une variable nommée export . Inutile, mais pas une erreur.

  4. Définir l'attribut d'exportation sur une variable nommée PATH; . C'est votre erreur, puisqu'un nom de variable ne peut pas contenir un ; .

La solution consiste à supprimer le $(/usr/libexec/path_helper -s) de votre .bash_profile ; il ne doit être exécuté qu'une seule fois à partir de /etc/profile .

1voto

dumbledad Points 179

Juste pour transformer le commentaire de fd0 en une réponse, la ligne incriminée dans mon fichier ~/.bash_profile est la dernière

export VISUAL=vscodeeval $(/usr/libexec/path_helper -s)  

La suppression de cette ligne résout le problème et semble n'avoir aucun effet négatif. Malheureusement, je n'arrive pas à me souvenir ni à comprendre pourquoi elle était là.

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