当我在 bash 中打印出路径时,它会打印以下内容:
/usr/bin:/bin:/usr/sbin:/sbin:/usr/local/bin:/usr/X11/bin
当我在 Eclipse 下运行 Java 中的 System.out.println(System.getenv("PATH")); 时,它会打印
/usr/bin:/bin:/usr/sbin:/sbin
我如何才能弄清楚为什么会出现这种差异?我需要将 /usr/local/bin 添加到 PATH 并使其可用于 Eclipse 下的 Java 应用程序。(注意:我没有修改系统路径,因此这些是操作系统或我安装的一个或多个应用程序设置的默认设置。)
答案1
对于那些多年后才寻找答案的人(霓虹灯、氧气):
由于 MacOS 终端中缺少 $PATH 条目,eclipse 中的部分节点和 angular/angular2 工具失败。您的工具可能使用嵌入式 eclipse 终端,该终端不会启动提供您的登录/用户 shell。因此,您需要在 eclipse 首选项中将 eclipse 终端设置为以 --login shell 启动,以便包含您的用户 PATH 设置:
去:
Preferences -> Terminal -> Local Terminal
并设置
Arguments
到:--login
在 Eclipse 中打开一个新的终端,从现在起应该使用用户的 $PATH。此外,在 Eclipse 中打开新的终端时,您在 ~/.bash_profile 中设置的所有内容都将运行。
答案2
如果您想在 OSX 上设置系统范围的变量,您需要将其放在您的 ~/.MacOSX/environment.plist 文件中。
看苹果网站上的这个页面了解更多详情。
答案3
遇到了同样的问题。这是我的解决方案:
编辑
/etc/paths
文件以包含所需的附加路径。对于 OSX 安装,运行
/Applications/eclipse/eclipse
不是/Applications/eclipse/Eclipse.app
答案4
如果您使用的是 Eclipse(使用“Mars”测试),则可以更改“运行配置”:
- 点击“运行”→“运行配置……”
- 在左侧选择合适的运行配置
- 现在选择“环境”选项卡
- 点击“新建…”
- 在“名称”字段中输入“PATH”
- 现在转到您的终端,输入“echo $PATH”并复制结果
- 将结果粘贴到“值”字段中
- 点击“确定”
- 返回“环境”选项卡,确保选择“将环境附加到本机环境”
现在 Eclipse 使用与系统相同的 PATH 环境变量值。请记住:这仅适用于您选择的运行配置。
正如您在问题中已经提到的,请在 Java 中使用以下命令进行检查:
System.getenv();