338

我正在使用 zsh,我正在尝试向变量添加一个新条目 ( /home/david/pear/bin),PATH但我不知道如何。

最让我困惑的是,我的文件中没有一个PATH变量引用~/.zshrc,而是echo $PATH返回:

/usr/lib/lightdm/lightdm:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games

所以在PATH某处设置了一个变量。

4

8 回答 8

416

实际上,使用 ZSH 允许您使用环境变量的特殊映射。所以你可以简单地做:

# append
path+=('/home/david/pear/bin')
# or prepend
path=('/home/david/pear/bin' $path)
# export to sub-processes (make it inherited by child processes)
export PATH

对我来说,这是一个非常简洁的功能,可以传播到其他变量。例子:

typeset -T LD_LIBRARY_PATH ld_library_path :
于 2013-08-06T10:41:27.553 回答
331

在这里,将此行添加到.zshrc

export PATH=/home/david/pear/bin:$PATH

编辑:这确实有效,但下面的答案更好,因为它利用了 ZSH 为变量提供的结构化接口,如$PATH. 这种方法是标准的bash,但据我所知,当 ZSH 提供更好的替代方案时,没有理由使用它。

于 2012-07-17T20:15:05.857 回答
83

您可以以最小的方式附加到您的。PATH除非您附加多个元素,否则不需要括号。它通常也不需要引号。所以简单,简短的追加方法是:

path+=/some/new/bin/dir

这种小写语法path用作数组,但也会影响其大写伙伴等效项PATH(通过“绑定”到它typeset)。

(请注意,不需要/想要no:作为分隔符。)

常见的交互用法

然后测试新脚本/可执行文件的常见模式变为:

path+=$PWD/.
# or
path+=$PWD/bin

常见配置用法

您可以在您的周围添加路径设置.zshrc(如上),它自然会导致前面列出的设置优先(尽管您可能偶尔仍想使用“前置”表单path=(/some/new/bin/dir $path))。

相关花絮

以这种方式处理path(作为数组)还意味着:无需执行 a rehash即可找到新路径的命令。

还可以将其视为编辑 (和其他内容)vared path的动态方式。path

您可能只path对这个问题感兴趣,但由于我们谈论的是导出和数组,请注意 通常无法导出数组。

您甚至可以防止PATH重复条目 (请参阅 thisthis):

typeset -U path

PATH 预填充

您的路径中已经有一些条目的原因是由于您的系统外壳文件为您设置了路径。这在其他几篇文章中有介绍:

于 2015-06-11T22:11:39.757 回答
53

一个班轮,无需打开~/.zshrc文件

echo -n 'export PATH=~/bin:$PATH' >> ~/.zshrc

或者

echo -n 'export PATH=$HOME/bin:$PATH' >> ~/.zshrc

要查看效果,请source ~/.zshrc在同一选项卡中执行或打开一个新选项卡

于 2017-12-13T14:26:38.913 回答
29
  1. 添加了 ~/.zshrc 的路径

    sudo vi ~/.zshrc

    添加新路径

    export PATH="$PATH:[NEW_DIRECTORY]/bin"
    
  2. 更新 ~/.zshrc

    保存 ~/.zshrc

    source ~/.zshrc

  3. 检查路径

    echo $PATH

于 2019-07-10T03:43:44.993 回答
20

选项 1:将此行添加到 ~/.zshrc:

export "PATH=$HOME/pear/bin:$PATH"

之后,您需要运行source ~/.zshrc以使您的更改生效或关闭此窗口并打开一个新窗口

选项 2:在终端控制台内执行它以仅将此路径添加到当前终端窗口会话。当您关闭窗口/会话时,它将丢失。

于 2018-05-08T12:12:08.650 回答
1

对我来说,PATH=$PATH:/path/to/file/bin 然后export PATH工作。检查echo $PATH。其他解决方案正在临时添加路径。

于 2021-10-30T13:26:12.547 回答
0

要验证您的新目录是否已正确添加,您可以使用

print -l $path

由于它的类型已知是一个数组

于 2022-01-29T10:06:45.443 回答