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

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

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

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

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

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

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

~/.bash_profile 

小牛更新

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

只有狮子和山狮子

OS X窗口应用程序从您的environment.plist文件接收环境变量。 这可能是你的意思是“.plist”文件。 该文件位于:

 ~/.MacOSX/environment.plist 

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

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

这听起来像你想要的是改变environment.plist文件,而不是.bash_profile。

最后一件事,如果你查找这些文件,我认为你不会找到它们。 如果我记得正确的话,他们不是我最初安装的狮子。

编辑:这里是一些创建plist文件的说明。

  1. 打开Xcode
  2. 选择文件 – >新建 – >新建文件…
  3. 在Mac OS X中选择资源
  4. 选择一个plist文件
  5. 按照其余的提示

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

一旦plist文件被创建,你可以用Xcode打开它来随时修改它。

你的“.profile”或者“.bash_profile”只是你的“home”文件夹中的文件。 如果您打开一个Finder窗口并在收藏夹窗格中单击您的帐户名称,您将看不到它们。 如果你打开一个终端窗口并输入“ls”列出文件…你仍然不会看到它们。 但是你可以通过在终端中使用“ls -a”来找到它们。 或者如果你打开你最喜欢的文本编辑器(比如TextEdit,因为它带有OS X)并执行File-> Open,然后按Command + Shift +。 并点击您的帐户名称(主文件夹),您也将看到它们。 如果你没有看到它们,那么你可以简单地在你最喜欢的文本编辑器中创建一个。

现在,添加环境变量相当简单,在概念上与Windows非常相似。 在.profile中,每行添加一个变量名称和值,如下所示:

 export JAVA_HOME=/Library/Java/Home export JRE_HOME=/Library/Java/Home 

等等

如果您正在修改“PATH”变量,请确保包含系统已为您设置的默认路径:

 export PATH=$PATH:/path/to/my/stuff 

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

您可以使用终端中的“set”命令检查您的更改是否生效。 只要输入“set”(或者如果你喜欢分页列表,就选择“set | more”),并确定你添加到文件中的是什么。

至于向GUI应用程序添加环境变量,通常不是必需的,我想了解更多关于您正在做什么以更好地为您提供答案的信息。

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

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

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

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

顺便说一句,干净安装的操作系统10.7.x狮子没有一个environment.plist ,我可以找到,所以它可能工作,但也可能会被弃用。

 echo $PATH 

它打印当前路径值

然后做vim ~/.bash_profile并写入

 export PATH=$PATH:/new/path/to/be/added 

在这里你追加到旧的路径,所以保留旧的路径,并添加你的新路径

然后做

 source ~/.bash_profile 

这将执行它并添加路径

然后再次检查

 echo $PATH 

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

这是一个简单的解决方案,而不必与bash 。 在我的情况下,它正在gradle工作(对于Android Studio )。

顺便说一句,这些步骤涉及OSX(山狮10.8.5)

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

    sudo nano /etc/paths (或者sudo vim /etc/paths

    纳米

  • 转到文件底部,然后输入您想要添加的路径。
  • 打控制-x退出。
  • 输入“Y”保存修改的缓冲区。
  • 打开一个新的终端窗口,然后键入:

    echo $PATH

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

我从这个帖子得到了这些细节:

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

我希望可以帮助别人

简化说明

这个帖子/问题是有点老,所以我会回答OS X Lion用户的简化版本。 默认情况下,OSX Lion没有任何下列文件:

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

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

这是什么意思

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

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

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

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

 setenv FOO barbaz 

该文件在登录时由launchd读取。 您可以使用以下命令将“即时”变量添加到正在运行的launchd中:

 launchctl setenv FOO barbaz` 

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

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

如果碰巧试图以这种方式设置您的LANG或LC_变量,并且恰巧正在使用iTerm2,请确保在您正在使用的配置文件的“终端”选项卡下禁用“自动设置区域设置变量”设置。 这似乎覆盖launchd的环境变量,并在我的情况是设置一个破碎的LC_CTYPE导致远程服务器(通过变量)的问题。

(虽然environment.plist仍然可以在我的Lion上工作,但是您可以使用RCenvironment偏好窗格来维护该文件,而不是手动编辑它或者需要Xcode。似乎仍然在Lion上工作,尽管最后一次更新来自Snow Leopard时代,使之成为我个人喜欢的方法。)

在Mac OS上设置PATH环境变量

打开终端程序(默认情况下在你的Applications / Utilites文件夹中)。 运行以下命令

 touch ~/.bash_profile; open ~/.bash_profile 

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

以ANDROID SDK为例:

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

 export PATH=${PATH}:/Development/android-sdk-macosx/platform-tools:/Development/android-sdk-macosx/tools 

保存文件并退出文本编辑器。 执行你的.bash_profile来更新你的PATH。

 source ~/.bash_profile 

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

将路径变量添加到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, ie: $ echo "export PATH=$PATH:/usr/local/Cellar/nginx/1.0.12/sbin" >> .bash_profile $. .bash_profile #restart your bash shell 

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

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

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

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

     <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> ... 
  3. 重新加载应用程序的参数

     /System/Library/Frameworks/CoreServices.framework/Frameworks/LaunchServices.fra‌​mework/Support/lsregister -v -f /Applications/eclipse/Eclipse.app 
  4. 重新启动Eclipse

开放终端:

 vi ~/.bash_profile 

应用更改到系统(不需要重新启动计算机):

 source ~/.bash_profile 

(也可以使用macOS Sierra 10.12.1)

我采取了白痴的路线。 将这些添加到/ etc / profile的末尾

 for environment in `find /etc/environments.d -type f` do . $environment done 

创建一个文件夹/ etc / environments在其中创建一个名为“oracle”或“whatever”的文件,并在全局中添加我需要的东西。

/ etc $ cat /etc/environments.d/Oracle

 export PATH=$PATH:/Library/Oracle/instantclient_11_2 export DYLD_LIBRARY_PATH=/Library/Oracle/instantclient_11_2 export SQLPATH=/Library/Oracle/instantclient_11_2 export PATH=$PATH:/Library/Oracle/instantclient_11_2 export TNS_ADMIN=/Library/Oracle/instantclient_11_2/network/admin 

更多的细节,这可能有助于某人:

由于我自己的探索,我现在知道如何以8种不同的方式设置环境变量。 我试图让一个envar通过我在Xcode下开发的应用程序。 我使用这些不同的方法设置了“tracer”envars,告诉我哪些是进入我的应用程序的范围。 从下面,你可以看到在Xcode中编辑“scheme”来添加参数的工作,就像“putenv”一样。 什么没有在这个范围内设置:〜/ .MACOS / environment.plist,应用程序特定的plist,.profile,并添加一个构建阶段来运行自定义脚本(我发现另一种方式在Xcode [至少]设置一但忘了我所谓的示踪剂,现在找不到;也许是在另一台机器上)

GPU_DUMP_DEVICE_KERNEL是3

GPU_DUMP_TRK_ENVPLIST是(null)

GPU_DUMP_TRK_APPPLIST是(null)

GPU_DUMP_TRK_DOTPROFILE是(null)

GPU_DUMP_TRK_RUNSCRIPT是(null)

GPU_DUMP_TRK_SCHARGS是1

GPU_DUMP_TRK_PUTENV是1

另一方面,如果我进入终端,并说“设置”,它似乎是唯一一个从.profile(我会想它会拿起environment.plist也是,我是当然,有一次我在终端上看到了第二个跟踪器envar,所以有些东西可能从那时起就变得不可思议了。

让我从我个人的例子中以非常多的方式来说明你。

  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编程语言和蟒蛇分布。 现在,我需要为Java添加第一行的环境变量。 你必须输入第一行VERBATIM。 只是第一行。 保存并关闭文本编辑。 然后关闭终端。 在这里输入图像描述

  8. 再次打开终端。 我们来看看是否设置了环境变量。 在这里输入图像描述