当前位置: 首页>>技术教程>>正文


在ZSH中将新条目添加到PATH变量

, ,

问题描述

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

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

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

因此,将PATH变量设置在某处。

最佳解决思路

这里:

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

次佳解决思路

实际上,使用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 :

第三种解决思路

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

path+=/some/new/bin/dir

常用用法

然后,用于测试新脚本/可执行文件的通用模式变为:

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

此lower-case语法使用path作为数组,但也会影响其upper-case合作伙伴等效的PATH(通过typeset为其”bound”)。

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

相关花絮

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

另请参阅vared path,这是一种动态方式来编辑path和其他内容。

您可能只对path感兴趣,但是由于我们在谈论导出和数组,请注意arrays generally cannot be exported.

您甚至可以阻止PATH接受重复的条目(请参阅thisthis):

typeset -U path

第四种思路

一根衬纸,而不打开~/.zshrc文件

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

要么

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

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

第五种思路

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

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

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

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

第六种思路

  1. 添加了〜/.zshrc的路径

    sudo vi ~/.zshrc

    添加新路径

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

  3. 检查路径echo $PATH

参考资料

本文由Ubuntu问答整理, 博文地址: https://ubuntuqa.com/article/7590.html,未经允许,请勿转载。