History 命令在终端中工作,但在编写为 bash 脚本时不起作用

Ran*_*eer 4 linux bash shell terminal history

我有一个简单的单线,在终端中完美运行:

history | sort -k2 | uniq -c --skip-fields=1 | sort -r -g | head
Run Code Online (Sandbox Code Playgroud)

它的作用:给出用户最近最常用的 10 个命令。(不要问我为什么要实现这样的事情)

我启动一个编辑器并#!/bin/bash在开头输入相同的 a :

#!/bin/bash
history | sort -k2 | uniq -c --skip-fields=1 | sort -r -g | head
Run Code Online (Sandbox Code Playgroud)

并说我将其另存为script.sh. 然后,当我转到同一个终端时,输入bash script.sh并点击Enter,没有任何反应。

到目前为止我尝试过的:谷歌搜索。许多人有类似的痛苦,但他们通过sudo su添加或删除空格来解决。这些都不适合我。知道我可能哪里出错了吗?


编辑:

我想从终端本身做到这一点。运行此脚本的系统可能会或可能不会提供更改主文件夹中文件的权限。

BryceAtNetwork23 提出的另一个问题history,阻止我们执行它的命令有什么特别之处?

gle*_*man 6

查看您的历史记录仅在交互式 shell 中才有意义。使该命令成为一个函数而不是一个独立的脚本。在你的 ~/.bashrc 中,放

popular_history() {
    history | sort -k2 | uniq -c --skip-fields=1 | sort -r -g | head
}
Run Code Online (Sandbox Code Playgroud)

  • 历史扩展仅在交互式 shell 中默认启用,但可以在非交互式 shell 中使用 `set -o history` 启用。`.bash_history` 的内容可能需要使用 `history -r ~/.bash_history` 显式添加到当前 shell 的历史列表中。 (2认同)