bash 中的命令号指定自以该用户身份登录到您打开的任何终端以来键入的命令数。它可以在您的 PS1 中看到\#
,例如
export PS1="\! \# \\$"
我有时想重置这个号码。我可以在 bash 中重置历史记录编号history -c
除其他事项外但我不知道如何重置命令号。
我曾经看到有人使用 PS1,每当他们键入具有非零退出状态的命令时,就会将计数器重置为 0。我觉得这很有趣,并且正在尝试重新创建它,因为我在网上找不到它。我不想重置历史记录编号,因为这也会阻止我搜索过去的命令。编辑:我在没有重置命令号的情况下获得了此功能;看这里
有没有办法在没有 PS1 的情况下在 bash 中显示命令号,或者以某种方式设置它?
答案1
我要说“不”,或“不在 bash 4.4 中”,或“不更改代码并重新编译就不行”,因为该值位于名为 的变量中current_command_number
,并且仅被引用和递增:
$ grep -r current_command_number *.c
eval.c:extern int current_command_number, current_command_line_count, line_number;
eval.c: current_command_number++;
shell.c:int current_command_number = 1;
shell.c: current_command_number = 1;
y.tab.c:extern int current_command_number;
y.tab.c: temp = itos (current_command_number);
shell.c
将其设置为 1 两次:在变量实例化期间和在shell_reinitialize
功能。该函数还会重置提示、重新初始化历史记录并删除所有变量和函数。该函数仅从 调用一次main()
。
该变量的唯一外部可见性是在decode_prompt_string
函数中,当应该显示或重新显示提示时,会调用该函数本身。