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

2024-10-09 09:10:00
admin
原创
90
摘要:问题描述:我正在使用 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

大功告成!

相关推荐
  为什么项目管理通常仍然耗时且低效?您是否还在反复更新电子表格、淹没在便利贴中并参加每周更新会议?这确实是耗费时间和精力。借助软件工具的帮助,您可以一目了然地全面了解您的项目。如今,国内外有足够多优秀的项目管理软件可以帮助您掌控每个项目。什么是项目管理软件?项目管理软件是广泛行业用于项目规划、资源分配和调度的软件。它使项...
项目管理软件   601  
  华为IPD与传统研发模式的8大差异在快速变化的商业环境中,产品研发模式的选择直接决定了企业的市场响应速度和竞争力。华为作为全球领先的通信技术解决方案供应商,其成功在很大程度上得益于对产品研发模式的持续创新。华为引入并深度定制的集成产品开发(IPD)体系,相较于传统的研发模式,展现出了显著的差异和优势。本文将详细探讨华为...
IPD流程是谁发明的   7  
  如何通过IPD流程缩短产品上市时间?在快速变化的市场环境中,产品上市时间成为企业竞争力的关键因素之一。集成产品开发(IPD, Integrated Product Development)作为一种先进的产品研发管理方法,通过其结构化的流程设计和跨部门协作机制,显著缩短了产品上市时间,提高了市场响应速度。本文将深入探讨如...
华为IPD流程   9  
  在项目管理领域,IPD(Integrated Product Development,集成产品开发)流程图是连接创意、设计与市场成功的桥梁。它不仅是一个视觉工具,更是一种战略思维方式的体现,帮助团队高效协同,确保产品按时、按质、按量推向市场。尽管IPD流程图可能初看之下显得错综复杂,但只需掌握几个关键点,你便能轻松驾驭...
IPD开发流程管理   8  
  在项目管理领域,集成产品开发(IPD)流程被视为提升产品上市速度、增强团队协作与创新能力的重要工具。然而,尽管IPD流程拥有诸多优势,其实施过程中仍可能遭遇多种挑战,导致项目失败。本文旨在深入探讨八个常见的IPD流程失败原因,并提出相应的解决方法,以帮助项目管理者规避风险,确保项目成功。缺乏明确的项目目标与战略对齐IP...
IPD流程图   8  
热门文章
项目管理软件有哪些?
云禅道AD
禅道项目管理软件

云端的项目管理软件

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

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

内置subversion和git源码管理

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

免费试用