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

OSX Bash中cd命令传入整数为何跳转至$HOME目录?

问题根源:你的cd被脚本改写了!

这事儿一看set -x的输出就清楚了——你Shell里的scmb_expand_args脚本在处理cd命令时,把纯数字的参数给“吞”成空字符串了,导致实际执行的是不带参数的cd,而不带参数的cd默认就是跳转到$HOME目录。

从调试输出拆解关键过程

咱们对着你贴的set -x日志一步步看:

  1. 当你执行cd 123时,脚本进入scmb_expand_args函数,它会检查每个参数的格式,发现123匹配了^[0-9]{0,4}$(纯数字)的规则;
  2. 接着脚本执行[ -e 123 ],检查当前目录下是否存在名为123的文件/目录——因为你的foo目录是空的,这个判断结果是假;
  3. 然后调用_print_path '' e123,这个函数返回了空字符串;
  4. 最后脚本通过eval执行的命令变成了builtin cd (注意后面是空的),不带参数的cd自然就跳回你的$HOME了!
解决办法

这里给你几个实用的方案:

  • 临时绕过:如果要进入(或尝试进入)名为0/123的目录,用相对路径前缀./,比如cd ./0。这样脚本不会把./0识别为纯数字,会正常执行cd命令,目录不存在时就会弹出错误提示;
  • 修复脚本逻辑:找到scmb_expand_args所在的status_shortcuts.sh文件,修改处理纯数字参数的代码——比如加个判断:如果纯数字参数对应的路径不存在,就保留原参数,不要替换为空;
  • 暂时禁用脚本:如果这个脚本是某个Shell配置(比如自定义prompt、第三方插件)带来的,你可以在.bashrc里注释掉加载它的行,测试一下是否恢复正常的cd行为。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.15 07:28:05