【问题标题】:How to remove or trim a part of $PATH variable from directory: macOS zsh如何从目录中删除或修剪 $PATH 变量的一部分:macOS zsh
【发布时间】:2020-04-23 11:20:50
【问题描述】:

为了将 ~/.composer/vendor/bin 添加到我的 $PATH 目录中,我最终添加了其中的两个。所以,我想修剪/删除额外的 $PATH 目录部分。我的操作系统是 macOS Catalina,外壳是“-zsh”。

在 'echo $PATH' 之后,我的终端如下所示:/usr/local/bin:/usr/bin:/bin:/usr/sbin:/sbin:/Users/mdmuhaiminhossain/.composer/vendor/bin:/Users/mdmuhaiminhossain/.composer/vendor/bin:/Users/mdmuhaiminhossain/:/usr/local/bin:/usr/bin:/bin:/usr/sbin:/sbin:/Users/mdmuhaiminhossain/.composer/vendor/bin

我希望它看起来像这样:

/usr/local/bin:/usr/bin:/bin:/usr/sbin:/sbin:/Users/mdmuhaiminhossain/.composer/vendor/bin

我用这个命令修复它但失败了:

echo 'export PATH=/usr/local/bin:/usr/bin:/bin:/usr/sbin:/sbin:/Users/mdmuhaiminhossain/.composer/vendor/bin' >> ~/.zshrc

如果有人告诉我如何解决它,将非常感激。

【问题讨论】:

  • 您最初是如何编辑配置文件以更新 PATH 的?
  • 您尝试的修复只是让事情变得更糟。您的配置文件已经 有一些内容将所需的目录附加到PATH,然后您添加了执行相同操作的另一个 语句。很可能,您只需要在编辑器中打开 .zshrc 并删除修改 PATH 的无关语句。
  • 除了@chepner 所说的,请注意修改你的 ~/.zshrc 不会影响正在运行的 shell。你需要exec zsh

标签: macos path environment-variables zsh


【解决方案1】:

有一个简单的方法可以做到这一点(实际上是我从here 偷来的):

由于Zsh中的PATH与数组path同步,所以问题相当于保持path中的条目唯一。这可以通过将 path 声明为唯一值数组来完成:

typeset -aU path

【讨论】:

  • 不错的链接!但是请问你path的类型改成唯一数组后,后面的重复append会自动忽略吗?
  • typeset -U PATH有什么区别?
  • 第一个问题:您可以通过typeset -a arr; arr=(r e r t); typeset -U arr; echo ${arr[*]}自己轻松尝试
  • 我认为你可以写typeset -U path。写typeset -U PATH没有意义。 PATH 不是数组。
  • 好的,但typeset -U PATH 有效。我正在尝试上面的 sn-p。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2019-04-12
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-10-28
  • 2012-07-16
相关资源
最近更新 更多