2010-03-25 6 views
10

Soy un usuario de Linux que acaba de obtener un mac. Intento configurar mi IDE y descubrí que los Mac no usan .bashrc/.bash_profile/etc. para las aplicaciones de GUI. Por lo tanto, si tiene una aplicación GUI que necesita una variable de entorno, aparentemente se supone que debe hacerlo en /etc/launchd.confvariable setenv con espacios en launchd.conf?

Lo que pasa es que este archivo usa la sintaxis setenv de csh style ("valor clave setenv" en lugar de "exportar clave = 'valor'") así que ahora que tengo una variable que tiene un espacio, no sé qué hacer. Nada está funcionando. Esto es lo que he tratado de probarlo:

 
setenv MAVEN_OPTS "-Xms512m -Xmx1024m" 
setenv MAVEN_OPTS1 '-Xms512m -Xmx1024m' 
setenv MAVEN_OPTS2 (-Xms512m -Xmx1024m) 
setenv MAVEN_OPTS3=(-Xms512m -Xmx1024m) 
setenv MAVEN_OPTS4 -Xms512m -Xmx1024m 
setenv MAVEN_OPTS5 -Xms512m 
setenv MAVEN_OPTS6 "$MAVEN_OPTS5 -Xmx1024" 
setenv MAVEN_OPTS7 $MAVEN_OPTS5 -Xmx1024 
setenv MAVEN_OPTS8 /just/checking 
setenv MAVEN_OPTS9="-Xms512m -Xmx1024m" 
setenv MAVEN_OPTS10='-Xms512m -Xmx1024m' 
setenv MAVEN_OPTS11='-Xms512m\ -Xmx1024m' 
setenv MAVEN_OPTS12 '-Xms512m\ -Xmx1024m' 
setenv MAVEN_OPTS13 "-Xms512m\ -Xmx1024m" 
setenv MAVEN_OPTS14 -Xms512m\ -Xmx1024m 

Después de un reinicio única var # 5 y # 8 sobreviven. (Los que no tienen espacios). Ninguno de los demás está en mi entorno.

+0

¿has descubierto cómo hacerlo funcionar? Estoy teniendo el mismo problema. También noté que concat Vars no funciona. No puedo especificar: setenv MV 1 setenv MV12 $ MV/2 – mickthompson

+0

No, lo siento. Con suerte, un alma amable y bien informada llegará en un día y nos dejará saber la solución. ;) – inanutshellus

+0

Tengo exactamente el mismo problema. esos problemas de varsores, cada vez lo mismo problema diferente: S –

Respuesta

6

Intente utilizar launchd lugar (plist crear /Library/LaunchDaemons/java.props.plist):

<?xml version="1.0" encoding="UTF-8"?> 
<!DOCTYPE plist PUBLIC "-//Apple Computer//DTD PLIST 1.0//EN" 
    "http://www.apple.com/DTDs/PropertyList-1.0.dtd"> 
<plist version="1.0"> 
<dict> 
    <key>Label</key> 
    <string>java.props</string> 
    <key>ProgramArguments</key> 
    <array> 
     <string>launchctl</string> 
     <string>setenv</string> 
     <string>JAVA_OPTS</string> 
     <string>-Djava.io.tmpdir=/tmp -Dfile.encoding=UTF-8</string> 
    </array> 
    <key>RunAtLoad</key> 
    <true/> 
    <key>KeepAlive</key> 
    <true/> 
    <key>LaunchOnlyOnce</key> 
    <true/> 
</dict> 
</plist> 

Esto se ejecutará una vez y definir el entorno de arriba. Espero que ayude

+0

¡Gracias a un millón! He estado buscando una solución para esto todo el día. Esto es lo único que funciona globalmente. –

+1

¿Qué hay de más de una variable de entorno? –

2

No funciona como en un c-shell porque /etc/launchd.conf no es más que una secuencia de comandos especiales para launchctl. Consulte la página man de launchctl para obtener una referencia sobre lo que funciona en /etc/launchd.conf

Lamentablemente, esto aún no lo ayudará a resolver este problema, pero espero que aclare un poco el contexto. Para mí, este problema es una deficiencia en las herramientas launchctl/launchd de Apple. Me cuesta mucho trabajar por mi cuenta.

2

En 10.8.2 el siguiente comando funciona bien:

$ launchctl setenv MY_VARIABLE My\ value\ with\ spaces 

Verifique con:

$ launchctl getenv MY_VARIABLE 
My value with spaces 
+1

No funciona para mí. –

+2

'launchctl' en Terminal y' launchd.conf' no tienen ninguna relación. 'bash' analiza las barras diagonales inversas,' launchd.conf' no. – hamstergene

2

Añadir la siguiente línea a /etc/launchd.conf (crear si no existe)

setenv MY_VARIABLE My\ value\ with\ spaces

Tenga en cuenta que esto solo tendrá un efecto después r reiniciando.

Para utilizar el nuevo valor sin tener que reiniciar el sistema, además, ejecutar el comando en el terminal de

launchctl setenv MY_VARIABLE My\ value\ with\ spaces
como patrikha sugirió.

Tenga en cuenta que esto solo tendrá un efecto para las aplicaciones iniciadas después de ejecutar el comando. Manipular /etc/launchd.conf sigue siendo necesario para mantener el cambio después del reinicio.

0

En 10.13.2, esto funciona para mí:

launchctl setenv my_variable 'Mi valor con espacios'

Sin embargo, para ser específico, estoy usando Script Editor para crear una aplicación (~/StartupEnvVars .app) que contienen frases como esta:

hacer shell script de "launchctl setenv my_variable 'Mi valor con espacios'"

a continuación, en Opciones | Usuarios | arranque agrego esta aplicación como un elemento de inicio.

Funciona, con esta advertencia: si tengo la Terminal y mi aplicación R ejecutándose cuando cierro la sesión y elijo volver a abrir Windows al iniciar sesión, después de que esas aplicaciones se carguen automáticamente cuando inicio sesión, NO ven el variables de entorno establecidas por StartupEnvVars.app. Pero si cierro esas aplicaciones y las vuelvo a abrir, entonces ven las variables de entorno.

Si fuera Terminal solamente, usaría .bash_profile, pero también quiero configurar los vars para uso en R. Creo que ha habido alrededor de 5 formas de establecer entornos globales en OSX desde que comencé a usarlo. Cada nueva versión importante tiene una nueva forma de hacerlo. Molesto.

Cuestiones relacionadas