You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

zsh配置mnotes函数 文件夹已存在时无法正常cd进入的问题

问题现象

在.zshrc配置文件中添加了mnotes函数,预期实现逻辑:若~/Desktop/Notes文件夹不存在则创建该文件夹,若文件夹已存在则执行cd命令进入该目录,原函数代码如下:

function mnotes(){
   if [ ! -d ~/Desktop/Notes ];then
      mkdir ~/Desktop/Notes
   else
      cd ~/Desktop/Notes
}

配置的别名如下:

alias notes=mnotes

执行source命令重载.zshrc配置后,输入notes命令,仅能在Notes文件夹不存在时正常创建文件夹,但当文件夹已存在时无法正常cd进入该目录。

文件夹存在时运行脚本的报错截图:
文件夹存在时运行脚本的报错截图

故障原因
  • 核心语法错误:if条件判断结构缺少闭合关键字fi,zsh解析函数时语法不完整,执行else分支逻辑时直接触发语法报错。
  • 逻辑缺陷:原代码仅在文件夹已存在时才执行cd操作,首次创建文件夹后不会自动进入目录,不符合常规使用预期。
修复方法

将.zshrc中的mnotes函数替换为如下正确写法,替换后重新执行source ~/.zshrc重载配置即可正常使用:

function mnotes(){
   # 判断目录是否存在,不存在则递归创建
   if [ ! -d ~/Desktop/Notes ];then
      mkdir -p ~/Desktop/Notes
   fi
   # 无论新建还是已存在,最终都进入目标目录
   cd ~/Desktop/Notes
}

说明:mkdir增加-p参数是为了避免上层目录(比如Desktop目录被误删)不存在时创建报错,兼容性更好。

内容的提问来源于stack exchange,提问作者Santhosh Pai

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.03 03:42:31