【问题标题】:how to dynamically add to $PATH on Linux / OS X如何在 Linux / OS X 上动态添加到 $PATH
【发布时间】:2014-01-12 14:44:54
【问题描述】:

我知道为了在我的 OS X 路径中添加一个目录,我应该编辑我的 ~/.bashrc~/.profile 文件以添加如下内容:

export PATH=<<somepath>>:$PATH

我是 bash 的新手,我想知道:是否可以编辑我的 ~/.bash_profile 文件,以便我可以动态地执行此操作,这样我就可以从命令行永久添加一个目录我的道路通过做类似的事情

addpath <<somepath>>

改为?

【问题讨论】:

  • 我认为动态增加您的PATH 是不明智的。有很多充分的理由让您的 PATH 保持简短,例如export PATH=/usr/bin:/bin:/usr/local/bin:$HOME/bin;所以最好在 $HOME/bin/ 目录中添加符号链接。

标签: linux macos bash unix path


【解决方案1】:

需要在路径中添加条目的情况非常少见……因此为此创建脚本似乎有些过分。但是,如果您不想手动编辑文件,可以使用以下脚本:

  #!/bin/bash

  sed -i "s/PATH=/PATH=$1:/" .bash_profile

创建文件后,将其设置为使用

chmod u+x <script name>

【讨论】:

    【解决方案2】:

    首先在你的主目录中创建一个空文件,这个文件将是一个收集所有新添加到你的路径的地方,所以

    touch ~/.build_path
    

    接下来,您需要确保在处理 ~/.bashrc 文件时处理所有新添加的路径,因此将此行添加到您的 ~/.bashrc 文件中:

    source ~/.build_path
    

    最后,将此函数添加到您的 ~/.bashrc 文件中,此函数会立即更改当前的 PATH 设置,并在 ~/.build_path 文件中添加一个新条目,以便以后的 shell 会选择新路径。

    function addpath
    {
        echo "export PATH=\"$1\":\${PATH}" >> ~/.build_path
        export PATH=$1:$PATH
    }
    

    应该差不多了。唯一明显的问题是,如果您有两个正在运行的 shell,更改一个 shell 中的路径不会导致第二个 shell 中的路径被更新,您需要重新启动第二个 shell。

    【讨论】:

    • 很好的答案,但我认为动态增长 PATH 并不明智。
    • 这只是不断增加“export PATH=”行,而且越来越长。
    猜你喜欢
    • 2012-03-16
    • 2015-08-08
    • 2011-09-30
    • 2019-08-31
    • 2016-05-15
    • 2018-06-21
    • 1970-01-01
    • 2012-03-22
    相关资源
    最近更新 更多