在 ZSH 中的 PATH 变量中添加新条目

2024-10-09 09:10:00
admin
原创
316
摘要:问题描述:我正在使用 zsh 终端,并尝试/home/david/pear/bin向变量添加新条目 ( ) PATH。我没有PATH在~/.zshrc文件中看到对该变量的引用,但执行后echo $PATH会返回:/usr/lib/lightdm/lightdm:/usr/local/sbin:/usr/loc...

问题描述:

我正在使用 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

所以我知道路径变量正在某处设置。zshPATH终端的变量在哪里设置/修改?


解决方案 1:

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

解决方案 2:

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

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

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

解决方案 3:

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

path+=/some/new/bin/dir

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

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

常见交互用法

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

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

常见配置用法

您可以在路径设置周围散布一些路径设置.zshrc(如上所示),这自然会导致先前列出的设置优先(尽管您可能偶尔仍想使用“前置”形式path=(/some/new/bin/dir $path))。

相关新闻

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

还可以将其视为vared path一种动态的编辑方式path
(及其他事物)。

您可能只对这个问题感兴趣path,但由于我们正在讨论导出和数组,请注意
数组通常不能被导出。

您甚至可以防止PATH重复输入
(请参阅

和此):

typeset -U path

PATH 已预填充

您的路径中已经包含一些条目,这是因为您的系统 shell 文件为您设置了路径。其他几篇文章介绍了这一点:

  • 为什么以及在哪里设置 $PATH 环境变量?

  • $PATH 的来源在哪里?我在 .zshrc 中找不到它

解决方案 4:

一行代码,无需打开~/.zshrc文件

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

或者

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

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

解决方案 5:

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

sudo vi ~/.zshrc

添加新路径

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

保存 ~/.zshrc

source ~/.zshrc

  1. 检查路径

echo $PATH

解决方案 6:

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

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

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

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

解决方案 7:

如果你使用的是 macOS(我使用的是 Monterey 12.3.1),那么你可能和我一样感到很为难。上述这些说明在终端会话中对我都有效,但无论我对导出做了什么,我都无法让它持续存在。此外,我在任何地方都找不到 .zshrc。

事实证明,Apple 的做法不同。您需要编辑的文件是etc/paths。您可以简单地sudo nano /etc/paths在新行中添加路径。然后只需重新启动终端即可。

解决方案 8:

我在 Monterey 12.4 上,唯一可以更改路径的方法是使用辅助函数。在 nano 中编辑文本文件毫无效果

# append
path+=('/foo/bar/yourpath')
# export to sub-processes 
export PATH

解决方案 9:

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

解决方案 10:

一种原生的 zsh 方式是识别您的安装目录并创建一个文件,您将从中加载您的PATH修改:

touch $ZSH/custom/usrenv.zsh

并在其中添加新的 PATH 目录,如下所示usrenv.zsh

export PATH=$PATH:/home/myself/.foo/bin:/usr/local/bar/bin

目录custom文件*.zsh默认由 init 脚本获取.oh-my-zsh.sh,如下面这段代码所示:

if [[ -z "$ZSH_CUSTOM" ]]; then
    ZSH_CUSTOM="$ZSH/custom"
fi
...
for config_file ("$ZSH_CUSTOM"/*.zsh(N)); do
  source "$config_file"
done
unset config_file

解决方案 11:

小写路径变量对我来说不起作用。当我打开 .zshrc 时,已经有一个EXPORT PATH= "$HOME/.local/bin:$PATH", where $PATH is the current path variable set on the machine. All I did was append to the string adding a colon in front of the path. e.g. export PATH="$HOME/.local/bin:$PATH:$HOME/go/bin"`

之后的任何内容:都是要附加的新路径。

解决方案 12:

您可以将新文件添加到 /etc/paths.d,并添加该文件的路径。别忘了重新启动终端。

**#create new file to /etc/paths.d**
  touch /etc/paths.d/[filename]
**#open created file and add your path**
  vi /etc/paths.d/[filename]
**#save and close file and restart terminal**

解决方案 13:

为了尝试提供帮助,我将向您展示如何使用 BASH 脚本完成该过程。

重要提示: “PATH”环境变量必须在其配置中接收一个文件夹(例如:“/home/<YOUR_USER>/.scripts/zsh”),而不是直接接收二进制文件或脚本(例如:“/home/<YOUR_USER>/.scripts/zsh/my_bash_script”)。


安装 BASH 脚本作为集成终端命令

使 BASH 脚本可执行

运行以下命令使“my_bash_script”脚本可执行...

chmod +x /home/&lt;YOUR_USER>/.scripts/zsh/my_bash_script

将 BASH 脚本添加到 PATH

运行以下命令将 BASH 脚本目录临时添加到您的“PATH”...

export PATH=$PATH:/home/&lt;YOUR_USER>/.scripts/zsh  # Logged in as your user!

将此行添加到“.zshrc”文件的末尾,以便每次启动终端会话时自动添加它...

echo &#039;export PATH=$PATH:/home/&lt;YOUR_USER>/.scripts/zsh&#039; >> ~/.zshrc

重新加载“.zshrc”文件

要立即应用更改,请运行...

source ~/.zshrc  # Logged in as your user!

设置权限

接下来,您需要确保 BASH 脚本具有正确的权限...

chown -R &lt;YOUR_USER>:&lt;YOUR_USER> /home/&lt;YOUR_USER>/.scripts/zsh
chmod -R 700 /home/&lt;YOUR_USER>/.scripts/zsh

大功告成!

相关推荐
  政府信创国产化的10大政策解读一、信创国产化的背景与意义信创国产化,即信息技术应用创新国产化,是当前中国信息技术领域的一个重要发展方向。其核心在于通过自主研发和创新,实现信息技术应用的自主可控,减少对外部技术的依赖,并规避潜在的技术制裁和风险。随着全球信息技术竞争的加剧,以及某些国家对中国在科技领域的打压,信创国产化显...
工程项目管理   1565  
  为什么项目管理通常仍然耗时且低效?您是否还在反复更新电子表格、淹没在便利贴中并参加每周更新会议?这确实是耗费时间和精力。借助软件工具的帮助,您可以一目了然地全面了解您的项目。如今,国内外有足够多优秀的项目管理软件可以帮助您掌控每个项目。什么是项目管理软件?项目管理软件是广泛行业用于项目规划、资源分配和调度的软件。它使项...
项目管理软件   1354  
  信创国产芯片作为信息技术创新的核心领域,对于推动国家自主可控生态建设具有至关重要的意义。在全球科技竞争日益激烈的背景下,实现信息技术的自主可控,摆脱对国外技术的依赖,已成为保障国家信息安全和产业可持续发展的关键。国产芯片作为信创产业的基石,其发展水平直接影响着整个信创生态的构建与完善。通过不断提升国产芯片的技术实力、产...
国产信创系统   21  
  信创生态建设旨在实现信息技术领域的自主创新和安全可控,涵盖了从硬件到软件的全产业链。随着数字化转型的加速,信创生态建设的重要性日益凸显,它不仅关乎国家的信息安全,更是推动产业升级和经济高质量发展的关键力量。然而,在推进信创生态建设的过程中,面临着诸多复杂且严峻的挑战,需要深入剖析并寻找切实可行的解决方案。技术创新难题技...
信创操作系统   27  
  信创产业作为国家信息技术创新发展的重要领域,对于保障国家信息安全、推动产业升级具有关键意义。而国产芯片作为信创产业的核心基石,其研发进展备受关注。在信创国产芯片的研发征程中,面临着诸多复杂且艰巨的难点,这些难点犹如一道道关卡,阻碍着国产芯片的快速发展。然而,科研人员和相关企业并未退缩,积极探索并提出了一系列切实可行的解...
国产化替代产品目录   28  
热门文章
项目管理软件有哪些?
云禅道AD
禅道项目管理软件

云端的项目管理软件

尊享禅道项目软件收费版功能

无需维护,随时随地协同办公

内置subversion和git源码管理

每天备份,随时转为私有部署

免费试用