Bash shell脚本会留下命令历史记录吗?

4
bash shell脚本会留下执行的命令历史记录,例如.bash_history吗?我很好奇。

如果您设置了环境变量HISTCONTROL=ignorespace,带前导空格的命令(如 $ <space>command)将不会保存到历史记录中。 - thatseeyou
@thatseeyou,这是针对交互式还是非交互式Bash shell?这对脚本是否适用?我的Bash不允许在shell脚本中以$ (美元空格)特殊变量开头。 - osgx
1
@osgx $ 是提示符。您只能输入<空格> + 命令。 - thatseeyou
你的评论与“shell脚本”的问题有何关联?这些脚本没有提示符、历史记录和前导空格(它们通常是以Shebang神奇的#!开头的文件-https://en.wikipedia.org/wiki/Shebang_(Unix))? - osgx
1个回答

5
不,它不会:{{link1}} 当启用set内置命令的-o history选项(请参阅"Set Builtin"),shell提供对命令历史记录的访问,即以前键入的命令列表。要获取当前设置,请使用set -o命令。在交互式shell中(使用bash的-i选项或通常从登录或终端使用的bash),它会打印history on。在脚本中使用(bash -c 'set -o'或在未分配tty的情况下执行ssh machine bash时),它将被取消设置:history off。 {{link2}}

https://www.gnu.org/software/bash/manual/html_node/Interactive-Shell-Behavior.html

6.3.3 交互式 Shell 行为 - 当 Shell 以交互方式运行时,它会以几种方式改变其行为。

  1. 命令历史记录(参见 Bash 历史记录设施)和历史扩展(参见历史交互)默认启用。当启用历史记录的 Shell 退出时,Bash 将把命令历史记录保存到 $HISTFILE 指定的文件中。

可以使用几个命令在脚本中启用历史记录:https://askubuntu.com/questions/546556/how-can-i-use-history-command-in-a-bash-script / https://unix.stackexchange.com/questions/5684/history-command-inside-bash-script - 设置 HISTFILE 和(可选)HISTTIMEFORMAT,使用 set -o history 启用,然后使用 history 命令。


1
不确定是否可以使用“source script_name”命令(或相同的“. script_name”)运行bash脚本- http://stackoverflow.com/questions/9970058/#comment12738096_9970078 - 它在当前bash上下文中运行,可能启用了某些历史标志(实际上我记得它不会将命令放入.bash_history)。还有关于子shell:( some_command; ) - osgx

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接