Perché Terminal si lamenta "-bash: export:" PATH; ": non è un identificatore valido"

0

Quando avvio il terminale, ho ricevuto l'errore

-bash: export: 'PATH;': not a valid identifier

Perché?

Ho cercato nei due file che penso bash usi all'avvio, e non riesco a vedere un problema:

/ 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. Il file /usr/libexec/path_helper è binario e /etc/bashrc non contiene il testo "PATH".)

Da dove viene l'errore? Non riesco a visualizzare PATH; con il punto e virgola finale in entrambi i profili di avvio.

    
posta dumbledad 08.02.2017 - 11:15
fonte

2 risposte

2

Solo per trasformare il commento di fd0 in una risposta, la riga incriminata nel mio file ~ / .bash_profile è l'ultima

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

La rimozione di questa linea risolve il problema e sembra non avere effetti negativi. Purtroppo non riesco a ricordare né capire perché fosse lì

    
risposta data 10.02.2017 - 12:36
fonte
3

Guarda l'output di path_helper -s :

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

(Il valore effettivo assegnato a PATH non è importante, l'ho eluso qui.)

L'output è progettato per essere eseguito con eval , poiché è in /etc/profile . Lo scopo è fornire un valore iniziale per la variabile PATH , quindi impostare l'attributo export sul nome.

Nel tuo .bash_profile , stai eseguendo inutilmente di nuovo , ma anche erroneamente lasciando che l'output sia usato come argomenti aggiuntivi per un comando export . La linea

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

è considerato come

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

tranne il punto e virgola vengono trattati come caratteri letterali, non come terminatori di comando. Quindi, prova a fare quanto segue:

  1. Imposta VISUAL su vscodeval e imposta l'attributo export su VISUAL . Va bene.

  2. Imposta PATH su un valore iniziale (che termina con un punto e virgola, che non sarebbe quello che desideri, ma sintatticamente non è un problema) e imposta il relativo attributo di esportazione.

  3. Imposta l'attributo export su una variabile denominata export . Non necessario, ma non un errore.

  4. Imposta l'attributo export su una variabile denominata PATH; . Questo è il tuo errore, dal momento che il nome di una variabile non può contenere ; .

La correzione è di rimuovere solo $(/usr/libexec/path_helper -s) dal tuo .bash_profile ; deve essere eseguito solo una volta da /etc/profile .

    
risposta data 22.02.2017 - 06:05
fonte

Leggi altre domande sui tag