¿Por qué el terminal se queja "-bash: export: 'PATH;': no es un identificador válido"

0

Cuando inicio el terminal me sale el error

  

-bash: export: 'PATH;': no es un identificador válido

¿Por qué?

He buscado en los dos archivos que creo bash utiliza al inicio, y no puedo ver 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. El archivo /usr/libexec/path_helper es binario, y /etc/bashrc no contiene el texto 'PATH'.)

¿De dónde viene el error? No puedo ver PATH; con el punto y coma final en ninguno de los perfiles de inicio.

    
pregunta dumbledad 08.02.2017 - 11:15

2 respuestas

2

Solo para convertir el comentario de fd0 en una respuesta, la línea ofensiva en mi archivo ~ / .bash_profile es la última

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

Eliminar esa línea soluciona el problema y parece no tener efectos negativos. Lamentablemente no puedo recordar ni averiguar por qué estaba allí

    
respondido por el dumbledad 10.02.2017 - 12:36
3

Mira la salida de path_helper -s :

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

(El valor real asignado a PATH no es importante; lo he elegido aquí).

La salida está diseñada para ejecutarse con eval , ya que está en /etc/profile . El propósito es proporcionar un valor inicial para la variable PATH , luego establecer el atributo de exportación en el nombre.

En su .bash_profile , lo está ejecutando innecesariamente de nuevo , pero también permite que la salida se use como argumentos adicionales para un comando export . La linea

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

se trata como

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

excepto que los puntos y coma se tratan como caracteres literales, no como terminadores de comando. Por lo tanto, trata de hacer lo siguiente:

  1. Establezca VISUAL en vscodeval y establezca el atributo de exportación en VISUAL . Eso está bien.

  2. Establezca PATH en un valor inicial (que finalice con un punto y coma, que no sería lo que desea, pero sintácticamente no es un problema) y establezca su atributo de exportación.

  3. Establezca el atributo de exportación en una variable llamada export . No es necesario, pero no es un error.

  4. Establezca el atributo de exportación en una variable llamada PATH; . Ese es su error, ya que el nombre de una variable no puede contener un ; .

La solución es simplemente eliminar el $(/usr/libexec/path_helper -s) de tu .bash_profile ; solo necesita ejecutarse una vez desde /etc/profile .

    
respondido por el chepner 22.02.2017 - 06:05

Lea otras preguntas en las etiquetas