0 votos

¿Por qué se queja Terminal "-bash: export: `PATH;': identificador no válido"?

Cuando inicio la terminal obtengo el error

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

¿Por qué?

He revisado los dos archivos que creo que bash utiliza al inicio, y no puedo ver un problema:

/etc/profile

# Perfil .profile del sistema para 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 está saliendo el error? No puedo ver PATH; con el punto y coma al final en ninguno de los perfiles de inicio.

0 votos

¿Qué estás tratando de lograr en la última línea de tu bash_profile?

0 votos

No lo soy, creo que ese es el perfil estándar. Al menos nada de eso me resulta familiar.

0 votos

¡Pero si quito esa línea se arregla todo! Gracias. Me pregunto quién la agregó.

3voto

Andres Puntos 113

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 eliminado aquí.)

La salida está destinada a ser ejecutada con eval, como se hace en /etc/profile. El propósito es proporcionar un valor inicial para la variable PATH, y luego establecer el atributo de exportación en el nombre.

En tu .bash_profile, estás ejecutándolo innecesariamente de nuevo, pero también dejando incorrectamente que la salida se utilice como argumentos adicionales para un comando export. La línea

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

se interpreta como

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

excepto que los puntos y comas se interpretan como caracteres literales, no como terminadores de comandos. Por lo tanto, intenta hacer lo siguiente:

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

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

  3. Establecer el atributo de exportación en una variable llamada export. Innecesario, pero no es un error.

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

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

1voto

dumbledad Puntos 121

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 resuelve el problema y parece no tener efectos negativos. Lamentablemente no puedo recordar ni averiguar por qué estaba allí

2 votos

Deberías probablemente tener un salto de línea después de VISUAL=vscodeeval

AppleAyuda.com

AppleAyuda es una comunidad de usuarios de los productos de Apple en la que puedes resolver tus problemas y dudas.
Puedes consultar las preguntas de otros usuarios, hacer tus propias preguntas o resolver las de los demás.

Powered by:

X