11

私は最近Macを入手したLinuxユーザーです。IDEをセットアップしようとしていますが、MacがGUIアプリに.bashrc /.bash_profile/などを使用していないことがわかりました。したがって、環境変数を必要とするGUIアプリがある場合は、/ etc/launchd.confでそれを行うことになっているようです。

つまり、このファイルはcshスタイルのsetenv構文( "export key='value'"ではなく"setenvkey 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

再起動後、変数#5と#8のみが存続します。(スペースのないもの。)残りはどれも私の環境にはありません。

4

5 に答える 5

8

代わりに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回実行され、環境がセットアップされます。お役に立てば幸いです。

于 2012-07-13T22:29:15.827 に答える
3

次の行をに追加します/etc/launchd.conf(存在しない場合は作成します)

setenv MY_VARIABLE My\ value\ with\ spaces

これは再起動後にのみ効果があることに注意してください。

再起動せずに新しい値を使用するには、ターミナルでコマンドを追加で実行します

launchctl setenv MY_VARIABLE My\ value\ with\ spaces
パトリカが示唆したように。

これは、コマンドの実行後に開始されたアプリケーションにのみ影響することに注意してください。再起動後も変更を維持するには、操作/etc/launchd.confが必要です。

于 2013-09-30T07:44:00.060 に答える
2

/etc/launchd.confはlaunchctlの一連の特別なコマンドにすぎないため、c-shellのようには機能しません。/etc/launchd.confで機能するもののリファレンスについては、launchctlのマニュアルページを参照してください。

残念ながら、これでもこの問題の解決には役立ちませんが、コンテキストが少し明確になることを願っています。私にとって、この問題はAppleのlaunchctl/launchdツールの欠点です。私はそれを自分で回避するのに苦労しています。

于 2010-08-31T22:07:20.693 に答える
2

10.8.2では、次のコマンドが正常に機能します。

$ launchctl setenv MY_VARIABLE My\ value\ with\ spaces

確認方法:

$ launchctl getenv MY_VARIABLE
My value with spaces
于 2012-12-30T20:38:39.163 に答える
1

10.13.2では、これは私のために機能します:

launchctl setenvMY_VARIABLE'スペースを含む私の値'

ただし、具体的には、スクリプトエディターを使用して、次のような行を含むアプリ(〜/ StartupEnvVars.app)を作成しています。

シェルスクリプトを実行します"launchctlsetenvMY_VARIABLE'スペースを含む私の値'"

次に、[設定]|[ユーザー]|[ログインアイテム]で、このアプリをスタートアップアイテムとして追加します。

これは機能しますが、この警告があります。ログアウト時にターミナルとRアプリを実行していて、ログイン時にウィンドウを再度開くことを選択した場合、ログイン時にこれらのアプリが自動ロードされた後、によって設定された環境変数は表示されません。 StartupEnvVars.app。しかし、これらのアプリを閉じて再度開くと、環境変数が表示されます。

ターミナルのみの場合は.bash_profileを使用しますが、Rでも使用できるようにenv変数を設定したいと思います。OSXを使い始めてから、グローバルenv変数を設定する方法は5つあると思います。それぞれのメジャーな新しいバージョンには、それを行うための新しい方法があります。迷惑。

于 2018-01-19T05:18:56.777 に答える