¿Cómo puedo configurar una variable de entorno específica del usuario que incluya un carácter de espacio?

0

Me gustaría agregar una variable de entorno para una cuenta específica donde la variable tenga un espacio. Parece que editar .bash_profile como abajo no funciona:

export ENV_VAR=“/Applications/Android Studio.app“

y tampoco lo hace:

export ENV_VAR=“/Applications/Android\ Studio.app“

Tengo que conformarme con cambiar el nombre del paquete de la aplicación, lo cual no es preferible.

    
pregunta andrewb 18.06.2014 - 05:32

1 respuesta

1

export ENV_VAR="/Applications/Android Studio.app" debería establecer la variable correctamente, pero es probable que el programa / script que usa la variable no lo cite correctamente. Si puede averiguar qué está usando la variable, podría ser posible corregir el script / programa.

Mi primera suposición sería que la variable de entorno es utilizada por un script de shell que hace algo como:

somecommand $ENV_VAR/subdir/filename

El problema ocurre porque el shell expandirá la variable y luego dividirá la palabra, es decir, dividirá /Applications/Android Studio.app/subdir/filename en dos argumentos: /Applications/Android y Studio.app/subdir/filename . Tenga en cuenta que la incrustación de escapes o citas en el valor de la variable no hace nada útil, porque el shell procesa las citas y escapa antes realizando sustituciones de variables. Por lo tanto, si utiliza export ENV_VAR="/Applications/Android\ Studio.app" , se dividirá en /Applications/Android\ y Studio.app/subdir/filename ; si usas export ENV_VAR="'/Applications/Android Studio.app'" se dividiría en '/Applications/Android y Studio.app/subdir/filename' .

La solución es poner comillas dobles alrededor de la referencia de variable, como esta:

somecommand "$ENV_VAR/subdir/filename"

que le dice al shell que no realice la división de palabras después de la sustitución, eliminando el problema.

Tenga en cuenta que también es posible que sea algo más que un script de shell, o un script de shell que esté haciendo algo más complicado como usar la variable para construir otra variable, y posiblemente dependiendo de la división de palabras cuando se usa esa variable. Arreglar este tipo de uso puede causar problemas.

    
respondido por el Gordon Davisson 18.06.2014 - 06:20

Lea otras preguntas en las etiquetas