在Mac OS X Lion上设置环境变量

And*_*ers 527 macos environment-variables osx-lion

当有人说"编辑您的.plist文件"或"您的.profile"或".bash_profile"等时,这只会让我感到困惑.我不知道这些文件在哪里,如果我必须这样做,如何创建它们等,以及为什么似乎有这么多不同的(为什么?他们做不同的事情?)

那么,有人可以非常耐心地向以前的Windows用户解释(想要更加熟悉令人愉快的,如果最初有些令人困惑的OS X世界)如何一步一步地做到这一点?

我需要为GUI应用程序和命令行应用程序设置变量,目前它是需要变量的ant脚本,但很可能还有其他需求.

请注意我也有狮子,因为谷歌的许多答案似乎已经过时了......

另请注意,我几乎没有使用终端的经验.我愿意学习,但请为新手解释...

Dav*_*d V 401

首先,要认识到OS X的一点是它是在Unix上构建的.这就是.bash_profile的用武之地.当您在OS X中启动终端应用程序时,默认情况下会获得一个bash shell.bash shell来自Unix,当它加载时,它运行.bash_profile脚本.您可以修改此脚本以供您的用户更改您的设置.该文件位于:

~/.bash_profile
Run Code Online (Sandbox Code Playgroud)

小牛队的更新

OS X Mavericks不使用environment.plist - 至少不适用于OS X Windows应用程序.您可以对窗口化应用程序使用launchd配置..bash_profile仍然受支持,因为它是终端中使用的bash shell的一部分.

狮子和山狮只

OS X窗口应用程序从environment.plist文件接收环境变量.这可能就是".plist"文件的含义.该文件位于:

~/.MacOSX/environment.plist
Run Code Online (Sandbox Code Playgroud)

如果您对environment.plist文件进行了更改,那么OS X Windows应用程序(包括终端应用程序)将设置这些环境变量.您在.bash_profile中设置的任何环境变量只会影响您的bash shell.

通常我只在.bash_profile文件中设置变量,不要更改.plist文件(或Mavericks上的launchd文件).大多数OS X窗口应用程序不需要任何自定义环境.只有当应用程序实际需要特定的环境变量时才更改environment.plist(或Mavericks上的launchd文件).

听起来你想要的是更改environment.plist文件,而不是.bash_profile.

最后一件事,如果您查找这些文件,我认为您将找不到它们.如果我没记错的话,他们不是我最初安装的Lion.

编辑:以下是创建plist文件的一些说明.

  1. 打开Xcode
  2. 选择文件 - >新建 - >新建文件...
  3. 在Mac OS X下选择Resources
  4. 选择一个plist文件
  5. 按照其余提示进行操作

要编辑文件,可以按住Control键单击以获取菜单,然后选择"添加行".然后,您可以添加键值对.对于环境变量,键是环境变量名称,值是该环境变量的实际值.

创建plist文件后,您可以使用Xcode打开它以随时修改它.

  • 了解`〜/ .bashrc`也很有用.每次打开一个新的非登录bash shell(例如xterm/aterm)时都会运行`〜/ .bashrc`文件,而`〜/ .bash_profile`只能使用登录shell运行,即首次登录系统时. (6认同)
  • 在这里找到了关于添加environment.plist的清晰解释http://developer.apple.com/library/mac/#qa/qa1067/_index.html。 (2认同)

tok*_*kov 222

.profile或者.bash_profile只是"home"文件夹中存在的文件.如果您打开Finder窗口并在"收藏夹"窗格中单击您的帐户名称,您将看不到它们.如果您打开终端窗口并键入ls列出文件,您仍然无法看到它们.但是,您可以ls -a在终端中使用它们找到它们.或者,如果您打开自己喜欢的文本编辑器(比如TextEdit,因为它附带OS X)并执行文件 - >打开然后按Command+ Shift+ .并单击您的帐户名称(主文件夹),您也会看到它们.如果您没有看到它们,则可以在您喜欢的文本编辑器中创建一个.

现在,添加环境变量相对简单,并且在概念上与windows非常相似.在你.profile刚刚添加,每行一个,变量名称及其值如下:

export JAVA_HOME=/Library/Java/Home
export JRE_HOME=/Library/Java/Home
Run Code Online (Sandbox Code Playgroud)

等等

如果要修改"PATH"变量,请确保包含已为您设置的系统默认PATH:

export PATH=$PATH:/path/to/my/stuff
Run Code Online (Sandbox Code Playgroud)

现在这里是古怪的部分,你可以打开一个新的终端窗口让新变量生效,或者你需要输入.profile.bash_profile重新加载文件并将内容应用到你当前的终端环境.

您可以使用终端中的"set"命令检查更改是否生效.只需键入set(或者set | more如果您更喜欢分页列表)并确保您添加到文件中的内容就在那里.

至于向GUI应用程序添加环境变量,这通常是没有必要的,我希望更多地了解您特别想要做的事情,以便更好地为您提供答案.

  • 如果在更改配置文件之前打开了终端窗口,则这些更改将不会反映在现有终端的环境中.您的快速解决方案是打开一个新的终端窗口.就这样.每个新窗口都会在.profile上设置所有内容.总是.修复旧的,已打开的窗口的方法是键入".profile"2个句点,它们之间有1个空格."set"命令用于设置当您结束设置的会话时死亡的环境变量.使用不带参数的"set"列出当前设置的变量. (4认同)
  • 谢谢,我不太明白最后一部分,我要么打开一个终端窗口让它们设置,或者输入.profile?但是我不能打开终端窗口来输入.profile吗?如果仅通过打开终端窗口自动设置它们,那么为什么我需要输入...?当我打开一个时,它们会被永久地设置吗?我可能误解了你,因为即使我的问题对我来说也没有意义...... (2认同)
  • 我不能让它发挥作用.我在/ Users/Anders下添加了一个文件.bash_profile,行导出AXF_DIR =/Applications/Antenna/AHFormatterV53,但是ant进程仍然找不到变量AXF_DIR ...另外,我在终端中尝试了set命令,并得到了很多信息,但没有关于这个变量.请注意,为了确保我也重新启动了系统,并且我还启动了一个新的终端窗口...... (2认同)
  • 尝试将其命名为`.profile`.我只是偷看了我最近购买的一台机器,他们似乎现在使用`.profile`而不是`.bash_profile` (2认同)

小智 76

以下是有关Lion OS 10.7.x中PATH变量的更多信息:

如果需要全局设置PATH,则系统按以下顺序构建PATH:

  1. 解析文件的内容,/private/etc/paths每行一个路径
  2. 解析文件夹的内容/private/etc/paths.d.该文件夹中的每个文件都可以包含多个路径,每行一个路径.加载顺序首先由文件名确定,然后由文件中的行顺序决定.
  3. 一个setenv PATH语句/private/etc/launchd.conf,它将该路径附加到已在#1和#2中构建的路径(您不能使用$ PATH来引用到目前为止已构建的PATH变量).但是,考虑到其他两个选项,在此设置PATH是完全没必要的,尽管这是可以为所有用户设置其他全局环境变量的地方.

这些路径和变量由所有用户和应用程序继承,因此它们是真正的全局 - 注销并且不会重置这些路径 - 它们是为系统构建的,并且在任何用户有机会登录之前创建,因此对这些更改需要重新启动系统才能生效.

顺便说一下,OS 10.7.x Lion的全新安装没有environment.plist我能找到的,所以它可能有用,但也可能会被弃用.

  • 如果您使用paths.d方式并且您有一个包含包含空格的文件夹的路径,请将它们保留为未转义状态.如果你试图逃避它们(我认为这是常见的做法?)它不起作用(至少对我而言).我在这里阅读:http://www.sweeting.org/mark/blog/2008/05/26/mac-os-x-tip-setting-path-environment-variables(搜索'spaces').希望这有助于其他任何人! (2认同)

lea*_*_19 51

echo $PATH
Run Code Online (Sandbox Code Playgroud)

它打印当前路径值

然后去vim ~/.bash_profile

export PATH=$PATH:/new/path/to/be/added
Run Code Online (Sandbox Code Playgroud)

在这里,您将附加到旧路径,因此保留旧路径并添加新路径

然后做

source ~/.bash_profile
Run Code Online (Sandbox Code Playgroud)

这将执行它并添加路径

然后再次检查

echo $PATH
Run Code Online (Sandbox Code Playgroud)

  • “vim”命令应该是 vim ~/.bash_profile 我试图编辑帖子,但 SO 告诉我编辑必须是 6 个字符:/ (2认同)

wir*_*d00 31

不幸的是,这些答案都没有解决我遇到的具体问题.

这是一个简单的解决方案,无需捣乱bash.在我的情况下,它开始gradle工作(for Android Studio).

顺便说一句,这些步骤与OSX有关(Mountain Lion 10.8.5)

  • 打开终端.
  • 运行以下命令:

    sudo nano /etc/paths(或sudo vim /etc/paths为vim)

    纳米

  • 转到文件底部,然后输入要添加的路径.
  • 点击control-x退出.
  • 输入"Y"以保存修改后的缓冲区.
  • 打开一个新的终端窗口然后键入:

    echo $PATH

您应该看到新路径附加到PATH的末尾

我从这篇文章中得到了这些细节:

http://architectryan.com/2012/10/02/add-to-the-path-on-mac-os-x-mountain-lion/#.UkED3rxPp3Q

我希望能帮助别人


vol*_*ron 23

简化说明

这篇文章/问题有点旧,所以我将回答OS X Lion用户的简化版本.默认情况下,OSX Lion没有以下任何文件:

  • 在〜/ .bashrc
  • 在〜/ .bash_profile
  • 〜/ .profile文件

最多,如果你在终端中做了什么,你可能会看到〜/ .bash_history

这是什么意思

您必须创建该文件以设置默认的bash命令(通常在〜/ .bashrc中).要做到这一点,请使用任何类型的编辑器,尽管在终端中执行它更简单:

  1. %> emacs .profile
  2. [来自w/in emacs类型:] source ~/.bashrc
  3. [来自w/in emacs类型:] Ctrl + x Ctrl + s(保存文件)
  4. [来自w/in emacs类型:] Ctrl + x Ctrl + c(关闭emacs)
  5. %> emacs .bashrc
  6. [从w /在emacs中键入/粘贴所有bash命令,保存并退出]

下次退出并重新加载终端时,它应该加载所有bash首选项.为了更好地衡量,将命令分成有用的文件名通常是个好主意.例如,在〜/ .bashrc中,你应该有一个source ~/.bash_aliases并将所有别名命令放在〜/ .bash_aliases中.


Gil*_*aro 18

对我有用的是.launchd.conf用我需要的变量创建一个:

setenv FOO barbaz
Run Code Online (Sandbox Code Playgroud)

此文件在登录时由launchd读取.您可以使用以下命令将"动态"变量添加到正在运行的launchd中:

launchctl setenv FOO barbaz`
Run Code Online (Sandbox Code Playgroud)

实际上,.launchd.cond只需包含launchctl命令.

以这种方式设置的变量似乎正确地存在于GUI应用程序中.

如果您碰巧尝试以这种方式设置LANG或LC_变量,而您恰好使用iTerm2,请确保在您正在使用的配置文件的"终端"选项卡下禁用"自动设置区域设置变量"设置.这似乎覆盖了launchd的环境变量,在我的例子中是设置了一个损坏的LC_CTYPE导致远程服务器上的问题(已经传递了变量).

(环境.plist似乎仍然可以在我的Lion上运行.你可以使用RCenvironment首选项窗格来维护文件,而不是手动编辑它或需要Xcode.似乎仍在使用Lion,尽管它的最后一次更新来自Snow Leopard时代.这是我个人喜欢的方法.)


Cha*_*JRA 14

在Mac OS上设置PATH环境变量

打开终端程序(默认位于Applications/Utilites文件夹中).运行以下命令

touch ~/.bash_profile; open ~/.bash_profile
Run Code Online (Sandbox Code Playgroud)

这将在您的默认文本编辑器中打开该文件.

以ANDROID SDK为例:

您需要添加Android SDK平台工具和工具目录的路径.在我的示例中,我将使用"/ Development/android-sdk-macosx"作为安装SDK的目录.添加以下行:

export PATH=${PATH}:/Development/android-sdk-macosx/platform-tools:/Development/android-sdk-macosx/tools
Run Code Online (Sandbox Code Playgroud)

保存文件并退出文本编辑器.执行.bash_profile以更新PATH.

source ~/.bash_profile
Run Code Online (Sandbox Code Playgroud)

现在每次打开终端程序时,PATH都会包含Android SDK.


小智 11

将路径变量添加到OS X Lion

这非常直接,在我的终端工作:

$echo "export PATH=$PATH:/path/to/whatever" >> .bash_profile #replace "/path/to/whatever" with the location of what you want to add to your bash profile, i.e: $ echo "export PATH=$PATH:/usr/local/Cellar/nginx/1.0.12/sbin" >> .bash_profile 
$. .bash_profile #restart your bash shell
Run Code Online (Sandbox Code Playgroud)

类似的回应如下:http://www.mac-forums.com/forums/os-x-operating-system/255324-problems-setting-path-variable-lion.html#post1317516

  • 也没有必要重新启动shell.使用`source .bash_profile`. (3认同)

nhu*_*uvy 7

开放式终端:

vi ~/.bash_profile
Run Code Online (Sandbox Code Playgroud)

应用更改到系统(无需重启计算机):

source ~/.bash_profile
Run Code Online (Sandbox Code Playgroud)

(也适用于macOS Sierra 10.12.1)


Jaa*_*akL 5

我在Maverics上遇到了Eclipse(在GUI上启动,而不是从脚本启动)的问题,它没有采用自定义PATH.我尝试了上面提到的所有方法都无济于事.最后,我根据这里的提示找到了最简单的工作答案:

  1. 转到/Applications/eclipse/Eclipse.app/Contents文件夹

  2. 使用文本编辑器(或XCode)编辑Info.plist文件,为具有完整路径的环境变量添加LSEnvironment字典.请注意,它还包括/ usr/bin等:

    <dict>
      <key>LSEnvironment</key>
      <dict>
            <key>PATH</key>
            <string>/usr/bin:/bin:/usr/sbin:/sbin:/dev/android-ndk-r9b</string>
      </dict>
      <key>CFBundleDisplayName</key>
      <string>Eclipse</string>
      ...
    
    Run Code Online (Sandbox Code Playgroud)
  3. 使用重新加载app的参数

    /System/Library/Frameworks/CoreServices.framework/Frameworks/LaunchServices.fra??mework/Support/lsregister -v -f /Applications/eclipse/Eclipse.app
    
    Run Code Online (Sandbox Code Playgroud)
  4. 重启Eclipse


Sum*_*rel 5

让我以非常冗余的方式从我的个人例子中说明你.

  1. 首先安装JDK后,确保已安装. 在此输入图像描述
  2. 有时,与Windows不同,macOS或Linux会自动为您设置环境变量.但事实并非如此.所以让我们检查一下. 在此输入图像描述 如果未设置环境变量,echo $ JAVA_HOME之后的行将为空.在你的情况下它必须是空的.

  3. 现在我们需要检查是否有bash_profile文件. 在此输入图像描述 你看到我的情况下我们已经有了bash_profile.如果不是,我们必须创建一个bash_profile文件.

  4. 创建一个bash_profile文件. 在此输入图像描述

  5. 再次检查以确保bash_profile文件存在. 在此输入图像描述

  6. 现在让我们打开bash_profile文件.macOS使用它的默认TextEdit程序打开它. 在此输入图像描述

  7. 这是保存环境变量的文件.如果您已打开新的bash_profile文件,则该文件必须为空.在我的例子中,它已经设置为python编程语言和Anaconda发行版.现在,我需要为Java添加环境变量,这只是添加第一行.你必须输入第一行VERBATIM.只是第一行.保存并关闭TextEdit.然后关闭终端. 在此输入图像描述

  8. 再次打开终端.让我们检查环境变量是否已设置. 在此输入图像描述