我是一位刚刚获得mac的Linux用户。我正在尝试设置我的IDE并发现Mac不会将.bashrc / .bash_profile /等用于GUI应用程序。所以,如果你有一个需要环境变量的GUI应用程序,你显然应该在/etc/launchd.conf中这样做
问题是,这个文件使用csh样式的setenv语法(“setenv键值”而不是“export key ='value'”)所以现在我有一个有空格的变量,我不知道该怎么办。什么都行不通。这就是我试图测试的:
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
重启后只有var#5和#8存活。 (那些没有空格的。)其余的都不在我的环境中。
答案 0 :(得分:7)
尝试使用launchd(创建plist /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>
这将运行一次并设置您的环境。希望它会有所帮助。
答案 1 :(得分:2)
它不像在c-shell中那样工作,因为/etc/launchd.conf只是一系列startctl的特殊命令。有关/etc/launchd.conf
中有用的参考,请参见launchctl手册页可悲的是,这仍然无法帮助您解决这个问题,但我希望它能稍微澄清一下背景。对我来说,这个问题是Apple的launchctl / launchd工具的一个缺点。我自己很难解决这个问题。
答案 2 :(得分:2)
在10.8.2上,以下命令正常工作:
$ launchctl setenv MY_VARIABLE My\ value\ with\ spaces
验证:
$ launchctl getenv MY_VARIABLE
My value with spaces
答案 3 :(得分:2)
将以下行添加到/etc/launchd.conf
(如果不存在则创建)
setenv MY_VARIABLE My\ value\ with\ spaces
请注意,这只会在重新启动后产生效果。
要使用新值而不必重新启动,另外在终端中运行命令
launchctl setenv MY_VARIABLE My\ value\ with\ spaces
正如patrikha所说。
请注意,这只会对运行该命令后启动的应用程序产生影响。在重新启动后仍然需要操作/etc/launchd.conf
来保持更改。
答案 4 :(得分:1)
在10.13.2中,这对我有用:
launchctl setenv MY_VARIABLE&#39;我的空间价值&#39;
但具体来说,我使用脚本编辑器创建一个包含这样的行的应用程序(〜/ StartupEnvVars.app):
执行shell脚本&#34;启动setenv MY_VARIABLE&#39;我的空间价值&#39;&#34;
然后,在“设置”|“用户”|“登录项”中,我将此应用添加为启动项。
这有点警告:如果我在注销时运行终端和我的R应用程序,并选择在重新登录时重新打开窗口,在我登录后自动加载这些应用程序后,他们看不到环境由StartupEnvVars.app设置的变量。但是,如果我关闭这些应用程序并重新打开它们,那么它们就会看到环境变量。
如果它只是终端,我使用.bash_profile,但我想设置env vars以便在R中使用。我认为自从我开始使用它以来,已经有大约5种方法在OSX中设置全局环境变量。每个主要的新版本都有一种新的方式。烦。