为什么该脚本不能删除部分命令历史记录,但在我的计算机上却无法正常工作?

点击

可以在以下位置找到该脚本:https : //stackoverflow.com/questions/14750650/how-to-de-delete-history-of-last-10-commands-in-shell

为了方便起见,它是:

for x in `seq $1 $2`
do
  history -d $1
done

我将其放在我的包含目录(已添加到PATH的目录)中,在该目录中我运行了许多其他编写的脚本,并且工作正常。

这不会产生从我的历史记录中删除行的预期结果,实际上它什么也没做。

知道历史命令为什么不起作用的想法吗?我想知道它是否与目录有关。

附加信息:

我尝试使用该代码,并尝试了不同的变体。如果echohistory命令前面放置一个并运行它,则会得到以下输出:

cgravel@scspc578:~$ idelhistory 300 305
history -d 300
history -d 301
history -d 302
history -d 303
history -d 304
history -d 305
cgravel@scspc578:~$ 

因此,对我来说,它似乎应该可以完美运行。我不知道为什么。该脚本正在/ $ HOME / Scripts /中运行,并且已包含在PATH中。我也尝试使用sudo运行它,并且没有任何变化。

吉勒斯“别再邪恶了”

一句话:它不起作用,因为您没有正确调用它。

首先,由于您的脚本不是以开头的#!/bin/bash,所以它实际上不是bash脚本。它是由哪个shell执行的,取决于您如何调用它。当您从bash命令行调用它时,bash会为其自身派生一个新实例(无论如何必须执行任何外部命令),而正是这个新实例执行了脚本。因此,该脚本将使用与父外壳程序相同的设置(包括迄今为止的历史记录)执行。用不同的选项执行; 特别是,脚本中的命令的历史记录跟踪已关闭(这很适合您,因为否则它会添加到您要修改的历史记录中)。

执行脚本的bash实例是否设置HISTFILE变量取决于其是否在父级中导出(这有点奇怪)。如果未将其导出并在子级中进行设置,则子脚本在结束时将不会保存修改后的历史记录。

如果HISTFILE已导出,则子脚本将修改您的历史记录文件。但是,除非您已将交互式shell配置为在每个命令后重新加载历史记录,否则修改后的历史记录将仅由新启动的bash实例获取。

如果要运行影响当前Shell实例的Shell代码段,则必须在当前Shell实例中运行该Shell,而不是将其作为子进程运行如果您想做其他会影响shell进程本身的事情,例如更改目录,设置变量等,就会遇到类似的问题。使用.(“点”)或source内置函数在当前shell进程中运行脚本。

. idelhistory 300 365

或者,您可以在中将其定义为函数.bashrc

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

为什么该程序在我的计算机上可以正常工作,但在另一台计算机上导致溢出?

将SSH命令历史记录存储在本地计算机上

将SSH命令历史记录存储在本地计算机上

如何在多台计算机上保留和汇总bash历史记录?

如何在远程计算机上获取任务历史记录?

设置新计算机时使用旧计算机上的bash历史记录文件吗?

删除历史记录文件后,为什么在历史记录中仍然有较旧的命令?

为什么我不能通过此循环从bash历史记录中删除多个条目

为什么我无法在特定计算机上打开特定rar文件,但在其他计算机上打开该文件?

为什么我的shell脚本不能正常工作?

在正常模式下,为什么q:会显示命令历史记录?

文件历史记录-从计算机删除文件后,文件将在备份中保留多长时间?

为什么“ cmd / k”会重置/清除/删除命令历史记录?

为什么删除bash历史记录还不够?

Maya –为什么“清除历史记录”命令后无法执行Print方法?

为什么在freebsd历史记录中我看到带有*的命令,但从未执行?

为什么我制作的此命令历史记录不起作用?

为什么 API 不能在移动设备上工作而在计算机上工作?

为什么我无法在Chrome的历史记录页面中标识元素?

了解为什么git-filter-branch无法清除我的历史记录

Google Chrome浏览器是否在计算机之间同步历史记录?

为什么我的超级精简字符串(HackerRank)问题解决方案在我的计算机上可以正常工作,但在HackerRank中给出错误答案?

为什么历史记录和.bash_history不同,如何删除历史记录中的条目?

Zend Session在我朋友的计算机上无法正常工作

Bootstrap 4 导航栏示例在我的计算机上无法正常工作

当我复制到计算机上时,无法获得正常工作的jsfiddle

当我粘贴命令而不是键入命令时,为什么未将其添加到历史记录中

为什么我不能在32位Windows 10计算机上安装Flutter?

为什么docker login命令会在我的计算机上保存未加密的密码?