AskOverflow.Dev

AskOverflow.Dev Logo AskOverflow.Dev Logo

AskOverflow.Dev Navigation

  • 主页
  • 系统&网络
  • Ubuntu
  • Unix
  • DBA
  • Computer
  • Coding
  • LangChain

Mobile menu

Close
  • 主页
  • 系统&网络
    • 最新
    • 热门
    • 标签
  • Ubuntu
    • 最新
    • 热门
    • 标签
  • Unix
    • 最新
    • 标签
  • DBA
    • 最新
    • 标签
  • Computer
    • 最新
    • 标签
  • Coding
    • 最新
    • 标签
主页 / server / 问题 / 16355
In Process
lajos
lajos
Asked: 2009-06-01 11:08:20 +0800 CST2009-06-01 11:08:20 +0800 CST 2009-06-01 11:08:20 +0800 CST

如何在 OS X 上设置全局 PATH 环境变量?

  • 772

我想附加到 OS X 上的全局 PATH 环境变量,以便所有用户 shell 和 GUI 应用程序都获得相同的 PATH 环境。

我知道我可以附加到 shell 启动脚本中的路径,但这些设置不会被 GUI 应用程序继承。

到目前为止,我发现的唯一方法是在/etc/launchd.conf中重新定义 PATH 环境变量:

setenv PATH /usr/bin:/bin:/usr/sbin:/sbin:/my/path

我想不出一种方法来实际附加到 PATH 中的launchd.conf.

我有点担心这种方法,但到目前为止,这是唯一有效的方法。有没有更好的办法?

mac-osx path
  • 8 8 个回答
  • 128675 Views

8 个回答

  • Voted
  1. cogg
    2010-05-28T22:53:04+08:002010-05-28T22:53:04+08:00

    palmer 的 GUI 信息是正确的,但是有一种更易于维护的方式来修改 shell 看到的路径。就像mediaslave 说的那样,您可以编辑/etc/paths,但更好的是,您可以将一个文本文件放入/etc/paths.d/其中包含路径,并且所有 shell 都会正确构建路径。

    例如,在我的系统上:

    $ cat /etc/paths
    /usr/bin
    /bin
    /usr/sbin
    /sbin
    /usr/local/bin
    $ ls /etc/paths.d
    X11       git      postgres
    $ cat /etc/paths.d/postgres
    /Library/PostgreSQL/8.4/bin
    $ echo $PATH
    /opt/local/bin:/opt/local/sbin:/usr/bin:/bin:/usr/sbin:/sbin:/usr/local/bin:/usr/local/git/bin:/Library/PostgreSQL/8.4/bin:/usr/X11/bin:/usr/local/mysql/bin
    
    • 73
  2. sorin
    2011-06-05T12:30:21+08:002011-06-05T12:30:21+08:00

    /etc/launchd.conf

    该文件是**唯一适用于OS X v10.8 (Mountain Lion) 和v10.9launchd.conf (Mavericks)上的命令行和 GUI 应用程序的完整解决方案,适用于所有用户的 GUI 和控制台应用程序.

    sudo touch /etc/launchd.conf
    sudo nano /etc/launchd.conf
    

    添加

    setenv PATH /usr/bin:/bin:/usr/sbin:/sbin:/usr/local/bin
    

    在上面的示例中,我添加/usr/local/bin了 PATH 的默认环境值。

    请记住,此文件不是脚本,您没有使用替换的选项。此外,要应用这些,您需要重新启动。

    请记住,所有其他只是部分解决方案:

    • environment.plist不适用于通过 Spotlight 启动的应用程序。
    • /etc/paths- 仅适用于控制台
    • /etc/csh.cshrc或/etc/bashrc- 仅适用于某些 shell

    此答案基于Setting environment variables on Mac OS X中的相同问题。

    • 49
  3. palmer
    2009-06-02T04:24:16+08:002009-06-02T04:24:16+08:00

    您将不得不逐个外壳设置它;Bash 和类似 csh 的 shell 不共享用于调整 PATH 的相同配置文件和语法。

    尝试这样做是launchctl行不通的,因为环境变量是在登录时设置的;它们在 shell 会话之外的 Unix 系统范围内不存在。

    所以你要添加

    setenv PATH "$PATH:/add/my/extra/path"
    

    到/etc/csh.cshrc和

    export PATH="$PATH:/more/paths:/
    

    到/etc/bashrc.

    如果您想要 GUI 应用程序中的环境变量,那就更复杂了。您必须.MacOSX/environment.plist在每个用户的主目录中创建一个文件。默认情况下该.MacOSX目录可能不存在,因此您必须创建它。

    文件的格式是这样的:

    <?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>PRINTER</key>
        <string>myprinter</string>
    
        <key>PATH</key>
        <string>/path/to/thing/I/need</string>
    
        <key>DISPLAY</key>
        <string>0:1</string>
    
    </dict>
    </plist>
    

    有关更多信息,请environment.plist 访问 Apple 网站。

    • 7
  4. manumoomoo
    2009-09-04T10:04:58+08:002009-09-04T10:04:58+08:00

    您可以通过向 中添加行来编辑全局路径/etc/paths,每行一个路径。

    sudo nano /etc/paths应该带你到那里。

    • 3
  5. ayaz
    2009-06-02T04:50:15+08:002009-06-02T04:50:15+08:00

    您是否查看过path_helperOS X 上命令行实用程序的手册页?我在 SO 上回答了一个有点相关的问题,我认为您可能会觉得有帮助。

    • 1
  6. noboomu
    2011-01-31T23:22:01+08:002011-01-31T23:22:01+08:00

    我不确定是否有人涵盖了最简单和最优雅的方式。至少在Mac OS X v10.6 (Snow Leopard) 上。

    弄乱文件可能会起作用[/etc/|~/.],[profile|bashrc]但它有点像黑客。该/etc/paths.d/目录是要走的路:

    • Sudo 进入你最喜欢的编辑器。
    • 创建一个名为*name*(只是不要将其命名为已经存在的名称)的新文件,/etc/paths.d/其中每行有一个路径:

      /usr/X11/bin
      /Developer/usr/bin
      
    • 然后加

      eval '/usr/libexec/path_helper -s`
      

      到profileor bashrc,你应该很高兴。

    • 1
  7. user1686
    2009-06-01T11:26:18+08:002009-06-01T11:26:18+08:00

    我不确定 launchd 是否接受这一点,但请尝试:

    setenv PATH "$PATH:/my/path"
    • 0
  8. Xerxes
    2009-06-01T20:10:46+08:002009-06-01T20:10:46+08:00

    我不确定你为什么要使用/etc/launchd.conf而不是/etc/profile- 但我不是 Mac OS X 方面的专家 - 我相信你,我确信它可以工作,但launchdMac OS X 的实现/替换是init- Mac OS X让我很困惑。

    无论如何,setenv PATH "$PATH:/more/paths:/and/more/paths"将工作(tcsh),并且 bourn shell 等价物是export PATH="$PATH:/more/paths:/and/more/paths"- 我也不知道launchd与特定 shell 有什么关系。

    我想我已经问了更多问题然后我已经回答了=)

    • 0

相关问题

  • Mac OS X:如何在无头机器上运行 GUI 应用程序

  • 全新安装后要安装到 Mac OS X 的程序列表是什么?

  • 多操作系统环境的首选电子邮件客户端

  • 现在从 mac os 在 NTFS 分区上写入是否安全?

  • 最佳混合环境(OS X + Windows)备份?[关闭]

Sidebar

Stats

  • 问题 205573
  • 回答 270741
  • 最佳答案 135370
  • 用户 68524
  • 热门
  • 回答
  • Marko Smith

    SFTP 使用什么端口?

    • 6 个回答
  • Marko Smith

    从 IP 地址解析主机名

    • 8 个回答
  • Marko Smith

    如何按大小对 du -h 输出进行排序

    • 30 个回答
  • Marko Smith

    命令行列出 Windows Active Directory 组中的用户?

    • 9 个回答
  • Marko Smith

    Windows 中执行反向 DNS 查找的命令行实用程序是什么?

    • 14 个回答
  • Marko Smith

    如何检查 Windows 机器上的端口是否被阻塞?

    • 4 个回答
  • Marko Smith

    我应该打开哪个端口以允许远程桌面?

    • 9 个回答
  • Marko Smith

    什么是 Pem 文件,它与其他 OpenSSL 生成的密钥文件格式有何不同?

    • 3 个回答
  • Marko Smith

    如何确定bash变量是否为空?

    • 15 个回答
  • Martin Hope
    MikeN 在 Nginx 中,如何在维护子域的同时将所有 http 请求重写为 https? 2009-09-22 06:04:43 +0800 CST
  • Martin Hope
    Tom Feiner 如何按大小对 du -h 输出进行排序 2009-02-26 05:42:42 +0800 CST
  • Martin Hope
    0x89 bash中的双方括号和单方括号有什么区别? 2009-08-10 13:11:51 +0800 CST
  • Martin Hope
    kch 如何更改我的私钥密码? 2009-08-06 21:37:57 +0800 CST
  • Martin Hope
    Kyle Brandt IPv4 子网如何工作? 2009-08-05 06:05:31 +0800 CST
  • Martin Hope
    Noah Goodrich 什么是 Pem 文件,它与其他 OpenSSL 生成的密钥文件格式有何不同? 2009-05-19 18:24:42 +0800 CST
  • Martin Hope
    Brent 如何确定bash变量是否为空? 2009-05-13 09:54:48 +0800 CST
  • Martin Hope
    cletus 您如何找到在 Windows 中打开文件的进程? 2009-05-01 16:47:16 +0800 CST

热门标签

linux nginx windows networking ubuntu domain-name-system amazon-web-services active-directory apache-2.4 ssh

Explore

  • 主页
  • 问题
    • 最新
    • 热门
  • 标签
  • 帮助

Footer

AskOverflow.Dev

关于我们

  • 关于我们
  • 联系我们

Legal Stuff

  • Privacy Policy

Language

  • Pt
  • Server
  • Unix

© 2023 AskOverflow.DEV All Rights Reserve