加入收藏 | 设为首页 | 会员中心 | 我要投稿 安卓应用网 (https://www.0791zz.com/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 综合聚焦 > 服务器 > Linux > 正文

如何防止Tmux用重复的路径填满全局PATH变量?

发布时间:2020-05-23 03:08:03 所属栏目:Linux 来源:互联网
导读:我通过Homebrew使用Mac OS X,iTerm2,zsh和Tmux.当我在iTerm2中启动终端会话时,全局PATH变量看起来仍然很好.但是当我打开一个Tmux会话时,PATH变量的扩展与它已经组成的相同的路径.我要在我的.zshrc中解决 code snippet的问题,但是我仍然对PATH变量被填充两次的

我通过Homebrew使用Mac OS X,iTerm2,zsh和Tmux.当我在iTerm2中启动终端会话时,全局PATH变量看起来仍然很好.但是当我打开一个Tmux会话时,PATH变量的扩展与它已经组成的相同的路径.我要在我的.zshrc中解决 code snippet的问题,但是我仍然对PATH变量被填充两次的原因感兴趣.

解决方法

这是因为.zshrc被评估为每个新的zsh进程.所以当您启动iTerm2时,会将其更改评估为$PATH,然后当您启动tmux以获取修改的$PATH并将其传递到其中的新的zsh实例,并且新的zsh进程再次评估.zshrc的创建改变了.

有几种方法可以防止这种情况.

$TMUX

首先,为了特别地防止在tmux内的shell发生,如果设置了$TMUX,你可以跳过这些更改:

if [[ -z $TMUX ]]; then
  PATH="$PATH:/foo"
fi

zprofile

另一个选择是将.zshrc的该部分移动到.zprofile文件.此文件仅由登录shell进行评估.但是,默认情况下,tmux将启动新的shell作为登录shell,因此您还需要通过向tmux配置添加以下内容来防止tmux:

set -g default-command /bin/zsh

您可能需要调整zsh的路径.这将阻止tmux启动zsh进程作为登录shell,因此tmux中的zsh不会查看.zprofile.

排字

与您链接的代码片段有关的其他选项有助于防止重复添加,这将是将您的路径修改更改为:

typeset -aU path
path=( $path /foo )

这是因为zsh自动将$path变量设置为镜像$PATH内容的数组.排版的-U选项修改该变量,使得条目是唯一的.

(编辑:安卓应用网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读