TLDR:脚本命令根据 $SHELL 的值分叉并创建一个子 shell,并记录来自该会话的文本。
您需要执行Ctrl + D
, 或exit
在您完成运行 script.sh 文件script
后退出
从script
手册页(http://man7.org/linux/man-pages/man1/script.1.html)
script 为您终端上打印的所有内容制作打字稿。
当分叉的 shell 退出时脚本结束(一个 control-D 退出 Bourne shell (sh(1)),并退出、注销或 control-d(如果未设置 ignoreeof)对于 C-shell、csh(1) )。
因此,如果你这样做
#!/bin/bash
script -a record.txt
mkdir folder
ls
然后 mkdir 命令不会被执行,因为您现在处于一个单独的分叉子 shell 中。使用ctrl + D
, 或退出后exit
,mkdir
将自动运行并创建所需的文件夹。
但是,由于 ls 是在原始 shell 中执行,而不是在脚本创建的子 shell 中执行,因此 command 的输出或和命令ls
的发出不会记录在 record.txt 文件中。mkdir
ls