Mac OS X和/或Eclipse上的PATH env变量


17

当我用bash打印出路径时,它会打印以下内容:

/usr/bin:/bin:/usr/sbin:/sbin:/usr/local/bin:/usr/X11/bin

当我运行System.out.println(System.getenv(“ PATH”))时;在Eclipse下运行的Java中,它会打印

/usr/bin:/bin:/usr/sbin:/sbin

我如何弄清楚为什么会有这种差异?我需要将/ usr / local / bin添加到PATH,并使其可用于Eclipse下的Java应用程序。(注意:我没有对系统路径进行任何修改,因此这些是操作系统或我安装的一个或多个应用程序设置的默认值。)

Answers:



9

对于那些在几年后寻找答案的人(Neon,氧气):

我的某些节点和eclipse中的angular / angular2工具由于在MacOS终端中缺少$ PATH条目而失败。您的工具可以适当地利用嵌入式eclipse终端,该终端不会开始提供您的登录名/用户外壳程序。因此,您需要在eclipse首选项中将eclipse终端设置为以--login shell身份启动,以便包含用户的PATH设置:

去:

Preferences -> Terminal -> Local Terminal

并设置

Arguments 至: --login

在Eclipse中打开一个新的Terminal,从现在开始应使用用户的$ PATH。当您在Eclipse中打开新终端时,在〜/ .bash_profile中设置的所有内容也将运行。


最佳解决方案,仅通过在GUI中更改Eclipse配置即可解决问题。
pXel

这个答案使我升级到Oxygen,这就是使它工作所需的一切。
约翰

我在Eclipse中没有版本字符串为“ 2019-06(4.12.0)”的“ Terminal”子菜单。
tsj

8

有同样的问题。这是我的解决方案:

  1. 编辑/etc/paths文件以包括所需的其他路径。

  2. 对于OSX安装,请不要运行/Applications/eclipse/eclipse /Applications/eclipse/Eclipse.app


1
此处的第二个数字是解决此类问题的方法。谢谢!!
汤米

1
我注册了该网站只是为了支持这个答案-项目2已解决问题!
Iftah '16

在哪里可以找到etc / paths?
约翰,

1
@John /etc/paths是文件的完整路径。您可以执行Cmd + Shift + G,然后将“ / etc”放入其中,然后按Enter /返回。您必须在此处找到名为“路径”的文件。
苏菲安

6

啊哈,我发现这个网页上写着

注意:Mac OS X在其默认PATH中不包含/ usr / local / bin。因此,假设您使用的是默认的bash shell,请在使用任何这些工具之前键入(或包含在/ etc / profile中)export PATH = / usr / local / bin:$ PATH。

这是适当/不合适的事情吗?除非我真的知道自己在做什么,否则我对编辑系统文件不屑一顾。/ usr / local / bin只能由root用户写,所以我不会打开安全漏洞,对吗?


奇怪的是,我添加了导出路径,它对从Dock运行的Eclipse没有影响。我也找到了关于路径的页面,我的/ etc / paths文件有

/usr/bin
/bin
/usr/sbin
/sbin
/usr/local/bin

但是这些路径不会在eclipse中显示...是否有一种简单的方法来创建/查找可以打印$ PATH的二进制文件,该文件可以从Dock运行,所以我可以更轻松地调试它?我不知道Eclipse是否会乱搞路径。


2
为您的最后一个问题+1。我想知道如何在OS X中而不是 bash或Terminal中诊断路径问题。
fideli 2010年

给未来的Google员工的注意事项:苹果现在/usr/local/bin在用户的中包括“ 第一” $PATH。(请参阅此处。)
Telemachus

4

如果您使用的是Eclipse(经过“火星”测试),则可以更改“运行配置”:

  1. 单击“运行”→“运行配置...”
  2. 在左侧选择合适的运行配置
  3. 现在选择“环境”标签
  4. 点击“新建...”
  5. 在“名称”字段中,输入“ PATH”
  6. 现在转到终端,输入“ echo $ PATH”并复制结果
  7. 将结果粘贴到“值”字段中
  8. 轻按“确定”
  9. 返回“环境”选项卡,确保选择“将环境附加到本机环境”

现在,Eclipse使用与系统相同的PATH环境变量值。请记住:这仅适用于您选择的运行配置。

正如您的问题中已经提到的那样,请使用以下命令检查Java:

System.getenv();

2

最有可能的是,您的bash登录脚本之一(.bashrc.bash_profile)正在更改$PATH。如果从终端启动Eclipse,它会/usr/local/bin进入它的路径吗?


1
好决定!如果我从终端运行Eclipse,则它的路径中有/ usr / local / bin。现在我该怎么办?/ usr / local / bin是不是所有应用程序路径中都应该存在的东西?我可以将其放在哪个脚本中,以便从Finder或Dock运行Eclipse时都可以在路径中进行操作?
詹森·S,2009年

1
另外,我的用户目录中没有.bashrc或.bash_profile。
詹森·S,2009年

2

上面的技巧对我有用:1)以root身份将路径添加到/ etc / paths 2)使用$ ECL_HOME / Eclipse.app / Contents / MacOS / eclipse而不是$ ECL_HOME / Eclipse.app启动eclipse


这对我有用,非常感谢!就我而言,运行Eclipse的路径是/Applications/Eclipse.app/Contents/MacOS/eclipse
Tsung-Ting Kuo

2

另外,您可能只是在/usr/local目录中添加了指向应用程序的符号链接。

例如root

ln -s /应用程序/PhantomJS/phantomjs-1.9.2-macosx/bin/phantomjs / usr / local / phantomjs

这帮助我从Eclipse中的Maven项目中运行(mvn测试)外部PhantomJS应用程序。


这似乎与like中的$PATH目录无关。您能详细解释一下吗?$PATH/usr/local/bin
pabouk

您在路径中的某处放置了符号链接,该符号链接指向不在路径中的实际位置。我以前做过,它仅适用于单个可执行文件,不适用于充满文件的目录
Jason S


1

蚀NEON,MAC OS X 10.11.6
Eclipse中的终端不能使用mvn命令。(I使一个软链接mvn/usr/local/bin

临时解决方案:

右键单击/Applications/eclipse->显示软件包内容->内容-> MacOS->双击eclipse以启动。

以这种方式启动Eclipse,Eclipse可以检测所有路径设置,然后我现在可以mvn在Eclipse终端中使用command。

您可以右键单击eclipse该文件夹并创建别名以方便地启动它。

我不知道为什么。我认为这应该是一个蚀BUG。


0

编辑~/.bash_profile以包含路径

而不是从启动板开始

打开终端并启动它

/Applications/Eclipse.app/Contents/MacOS/eclipse

那对我有用。


0

汇总一些答案并更新为简单的内容:

  1. 右键单击Eclipse.app,然后选择“显示软件包内容”
  2. 导航到Contents / MacOS以找到“ Eclipse”。
  3. 右键单击并选择“制作别名”,或在按住Command和Option的同时将其拖放。
  4. 将别名放在方便的位置,例如回到“应用程序”中。
  5. 双击启动。
  6. 没有步骤6!

这不仅会打开一个方便的Terminal窗口,显示Eclipse的原始输出,还将自动采用您在登录Shell中设置的任何路径。

所以,你可以使用任何正常的方法来设置路径(编辑/etc/paths~/.bash_profile或只安装一个象很乖的命令行工具mbed),并担心没有进一步。如果可以从终端调用它,那么Eclipse也可以调用它。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.