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

使用mktemp -d无法创建临时目录,执行cd $(mktemp -d)跳转至主目录

mktemp -d 创建临时目录失败(退出码248)的原因分析

核心现象关联解释

首先明确两个关键现象的逻辑:

  • 执行cd $(mktemp -d)跳转到主目录,是因为mktemp -d失败时没有输出任何内容,导致$(...)展开为空字符串,而cd命令不带参数时默认跳转至当前用户主目录。
  • 退出码248说明mktemp执行过程中触发了特定错误,具体原因可从以下方向排查:

具体排查方向

  • 临时目录父路径权限/可用性问题
    mktemp默认在/tmp目录下创建临时文件夹(若未通过TMPDIR环境变量指定其他路径)。需检查:

    1. 执行echo $TMPDIR,确认是否被设置到无写入权限的目录;
    2. 执行ls -ld /tmp,正常权限应为drwxrwxrwt,若权限不足(比如缺少其他用户的写入/执行权限),普通用户无法在其中创建目录;
    3. 检查/tmp所在磁盘的空间和inode使用情况:df -h /tmp(空间)、df -i /tmp(inode),任一耗尽都会导致无法创建新目录。
  • 模板格式错误(自定义模板场景)
    若手动指定了创建模板(比如mktemp -d mytmp.XXX),模板中必须包含至少3个X用于生成唯一随机字符,数量不足会导致mktemp无法生成合法的唯一目录名,触发失败。

  • 系统mktemp实现的特定错误码
    部分Linux发行版或类Unix系统的mktemp会用自定义退出码标识错误,248通常对应「无法创建指定路径的目录」。可执行man mktemp查看本地系统的退出码说明,确认具体错误类型。

快速验证步骤

  1. 手动指定标准模板测试:mktemp -d /tmp/test_temp.XXXXXX,若成功则说明原默认路径或模板存在问题;
  2. 临时指定TMPDIR到用户可写目录测试:TMPDIR=~/tmp mktemp -d(需先确保~/tmp存在且权限合法),若成功则原TMPDIR或/tmp存在问题。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.08 12:40:54