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

2024-10-09 09:10:00
admin
原创
349
摘要:问题描述:我正在使用 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大政策解读一、信创国产化的背景与意义信创国产化,即信息技术应用创新国产化,是当前中国信息技术领域的一个重要发展方向。其核心在于通过自主研发和创新,实现信息技术应用的自主可控,减少对外部技术的依赖,并规避潜在的技术制裁和风险。随着全球信息技术竞争的加剧,以及某些国家对中国在科技领域的打压,信创国产化显...
工程项目管理   2482  
  为什么项目管理通常仍然耗时且低效?您是否还在反复更新电子表格、淹没在便利贴中并参加每周更新会议?这确实是耗费时间和精力。借助软件工具的帮助,您可以一目了然地全面了解您的项目。如今,国内外有足够多优秀的项目管理软件可以帮助您掌控每个项目。什么是项目管理软件?项目管理软件是广泛行业用于项目规划、资源分配和调度的软件。它使项...
项目管理软件   1533  
  PLM(产品生命周期管理)项目对于企业优化产品研发流程、提升产品质量以及增强市场竞争力具有至关重要的意义。然而,在项目推进过程中,范围蔓延是一个常见且棘手的问题,它可能导致项目进度延迟、成本超支以及质量下降等一系列不良后果。因此,有效避免PLM项目范围蔓延成为项目成功的关键因素之一。以下将详细阐述三大管控策略,助力企业...
plm系统   0  
  PLM(产品生命周期管理)项目管理在企业产品研发与管理过程中扮演着至关重要的角色。随着市场竞争的加剧和产品复杂度的提升,PLM项目面临着诸多风险。准确量化风险优先级并采取有效措施应对,是确保项目成功的关键。五维评估矩阵作为一种有效的风险评估工具,能帮助项目管理者全面、系统地评估风险,为决策提供有力支持。五维评估矩阵概述...
免费plm软件   0  
  引言PLM(产品生命周期管理)开发流程对于企业产品的全生命周期管控至关重要。它涵盖了从产品概念设计到退役的各个阶段,直接影响着产品质量、开发周期以及企业的市场竞争力。在当今快速发展的科技环境下,客户对产品质量的要求日益提高,市场竞争也愈发激烈,这就使得优化PLM开发流程成为企业的必然选择。缺陷管理工具和六西格玛方法作为...
plm产品全生命周期管理   0  
热门文章
项目管理软件有哪些?
曾咪二维码

扫码咨询,免费领取项目管理大礼包!

云禅道AD
禅道项目管理软件

云端的项目管理软件

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

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

内置subversion和git源码管理

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

免费试用