如何将dir添加到zsh路径

如何将dir添加到zsh路径,zsh,Zsh,我是一个bash用户,第一次尝试zsh。在bash中,我有一些函数来操作路径,例如仅当 该目录存在,并且 如果该目录当前不在路径中。 对于bash,我有如下内容: ============================================================================= 如果元素在列表中,则返回true 0;如果元素不在列表中,则返回false 1 $1=列表,$2=元素 ======================================

我是一个bash用户,第一次尝试zsh。在bash中,我有一些函数来操作路径,例如仅当

该目录存在,并且 如果该目录当前不在路径中。 对于bash,我有如下内容:

============================================================================= 如果元素在列表中,则返回true 0;如果元素不在列表中,则返回false 1 $1=列表,$2=元素 ============================================================================= 功能容器{ 已找到=1 1=未找到,0=已找到 本地IFS=: 一美元换一个e 做 如果[[$2==$e]] 然后 找到=0 打破 fi 完成 返回$found } ============================================================================= 在列表中追加一个元素 $1=列表,$2=元素 ============================================================================= 函数lappend{ 如果[[-d$2]]&&!l包含$1$2 然后 回声1美元:2美元 其他的 回声1美元 fi } 用法: 导出路径=$lappend$PATH~/bin 再次添加相同的路径,不会导致重复 导出路径=$lappend$PATH~/bin
问题是,在zsh中,lcontains函数不起作用,因为zsh默认情况下不分割空白。那么,有什么方法可以实现我的目标吗?

一般解决方案:使用IFS拆分

功能容器{ 本地IFS=':' 本地已找到=1 1=未找到,0=已找到 局部e 对于e,在$echo$1中 做 如果[[$2==$e]] 然后 找到=0 打破 fi 完成 返回$found } ZSH唯一解决方案:按拆分

功能容器{ 本地已找到=1 1=未找到,0=已找到 局部e 对于${@s:1}中的e 做 如果[[$2==$e]] 然后 找到=0 打破 fi 完成 返回$found }
如果需要在zsh中拆分空间,则必须明确地说明这一点。例如,如果

x="ab   cd"
然后$x作为单个参数传递,但是${zx}作为两个参数ab和cd传递