当我们在tcsh中输入“history”时,我们可以看到历史命令列表,如下所示:
ubuntu:~> echo a
a
ubuntu:~> history
1 9:20 echo a
2 9:20 history
但是,如果我们将命令存储在文件“commands.txt”
中echo a
history
我们通过
将此文件的内容重定向到tcshtcsh < commands.txt
我们只能看到:
a
为什么会这样?为什么shell提示符不是输出的一部分?
顺便说一下,它实际上适用于bash,你只需要打开历史选项就像这样set -o history
echo a
history
答案 0 :(得分:0)
这可能不是为什么这个问题的完美答案。但至少它给你一些信息,不在脚本中使用历史命令。
在 http://www.tldp.org/LDP/abs/html/special-chars.html 搜索你找到的“历史”:
您可以在页面末尾的http://tldp.org/LDP/abs/html/histcommands.html中找到请注意,在脚本中,历史记录机制已禁用。
:
Unfortunately, the Bash history tools find no use in scripting.
#!/bin/bash
# history.sh
# A (vain) attempt to use the 'history' command in a script.
history # No output.
var=$(history); echo "$var" # $var is empty.
# History commands disabled within a script.
bash$ ./history.sh (no output)
答案 1 :(得分:0)
history 命令是内置的tcsh,因此不像普通命令那样。根据“Csh Programming Considered Harmful”咆哮,第2a节说
你不能以合理的方式将[内置插件]放在一起。
我不确定它甚至是合理的方式。并且脚本不会打印命令提示符。