Parece que no lo hiciste correctamente.
Sospecho que está intentando hacer la tercera cosa pero está usando una sintaxis incorrecta. Cinco errores comunes que podrían producir errores como lo que estás viendo son:
Usando espacios en lugar de =
. export NAME value
Es incorrecto; value
se interpreta como el nombre de una variable posterior para exportar.
(Esto sucede porque export NAME1 NAME2
es la sintaxis correcta para exportar múltiples variables).
Poner espacios alrededor =
. En muchos lenguajes de programación, es válido y estilísticamente preferido para rellenar operadores con espacios la mayor parte del tiempo. Pero para asignar un valor a una variable en un script de shell (u otra situación en la que está emitiendo comandos de shell), esto no está permitido. NAME = value
(en un export
comando o de otro modo) no funcionará; debes usar NAME=value
.
( export NAME = value
intenta exportar variables nombradas NAME
, =
y value
. Afortunadamente, esto nunca parece tener éxito silenciosamente porque intentar exportar una variable llamada =
es un error de sintaxis. Por el contrario export NAME= value
, parece funcionar, pero no se asigna value
a - en NAME
cambio, asigna el vacío, cadena de longitud cero NAME
y la exporta, y exporta la variable por separado value
. Ambos son errores comunes).
Separar partes del valor de la variable con espacios. Las variables de entorno pueden contener espacios, pero en la práctica rara vez se usan como separadores de campo en las variables de entorno. Cuando una sola variable contiene intencionalmente múltiples rutas, generalmente :
se usa para separarlas.
No citar espacios al asignar a variables. A veces se supone que el valor de una variable de entorno contiene un espacio. Por ejemplo, podría ser el nombre de un directorio que realmente contiene un espacio. En ese caso, es necesario citar cualquier espacio.
Una forma de hacer esto es precederlos \
. Consulte ¿Cómo puedo proteger los paréntesis pasados a un comando de CD? y No es posible borrar archivo para obtener información sobre otras maneras - los métodos presentados en las respuestas se aplican, aunque ni pregunta es específicamente acerca de la asignación de variables de entorno.
Por ejemplo, aquí hay algunas formas de exportar la variable de entorno SILLYPATH
con el valor /home/ek/silly name/bin
:
export SILLYPATH=/home/ek/silly\ name/bin
export SILLYPATH='/home/ek/silly name/bin'
export SILLYPATH="/home/ek/silly name/bin"
A menudo, cuando una carpeta que debe usar en un shell o asignar a una variable de entorno ampliamente utilizada contiene un espacio, puede ser beneficioso renombrarlo. (Pero a veces eso es poco práctico o indeseable).
Asignación y / o exportación de una variable cuando no se tenía que hacer nada. Esto es una especie de meta-error; El problema técnico específico es a menudo uno de los anteriores, pero la solución es deshacerse de la línea ofensiva, o alguna parte de ella, en lugar de solucionarla. No elimines indiscriminadamente el código de .bashrc
, por supuesto. Pero es export
posible que se haya agregado accidentalmente o inadvertidamente puede tener más código del que se pretendía. Por ejemplo, suponga que quiere escribir:
echo 'export PATH=~/some.bin:"$PATH"' >>~/.bashrc; . ~/.bashrc
Eso se agregaría .bashrc
, y luego volver a obtenerlo. Pero supongamos que en su lugar escribiste:
echo 'export PATH=~/some.bin:"$PATH" . ~/.bashrc' >>~/.bashrc # WRONG!
Entonces, su export
comando no solo exportaría un valor aumentado de PATH
, sino que también intentaría exportar variables con el nombre .
y , que no es lo que desea. Dado que contienen caracteres que están prohibidos en los nombres de las variables, recibirá un error cada vez que inicie un nuevo shell bash interactivo./home/your-username/.bashrc
Para evitar este problema, sugiero editar .bashrc
en un editor (por ejemplo nano ~/.bashrc
, gedit ~/.bashrc
) en lugar de redirigir la salida al final con >>
.