将以下脚本保存在文件中:
cat <<EOF | wc -l
$HOME
abc
$(hostname)
EOF
并执行它会出现以下错误:
$ ./a.sh
./a.sh: line 1: cannot create temp file for here-document: No space left on device
我的 Debian 认为设备上没有剩余空间(这不是真的,但它超出了我们的上下文)。不过我有足够的 RAM 空间。由于我的工具(脚本)也由于此错误而拒绝工作,因此我无法解决实际的“没有剩余空间”问题。我可以做些什么来让我的脚本使用 RAM 进行“heredoc”处理过程,以便至少让它们工作,以便我可以继续使用我的工具解决实际问题?
答案1
将$TMPDIR
变量指向 RAM 磁盘/tmpfs 上的某个目录,因为该变量决定 shell(至少bash
)在何处创建其临时文件。
答案2
tmpfs
找到文件系统的挂载点
grep tmpfs /etc/mtab
就我而言,其中一行是
tmpfs /run/user/1000 tmpfs rw,nosuid,nodev,relatime,size=808468k,nr_inodes=202117,mode=700,uid=1000,gid=1000 0 0
然后正如@telcoM提到的那样
export TMPDIR=/run/user/1000
(或将其用于文件,例如wc -l $(hostname) >> /run/user/1000/myexample
)
顺便说一句,这$(hostname)
只是一个例子还是您对此有何期望?