在OS X上执行终端命令而不将其保存到.bash_history?


19

该站点表示,在Linux上,您可以space在终端命令之前添加,以防止它进入.bash_history

这似乎不适用于Mac OSX。有人知道在终端上执行单个命令而不保存到历史记录的方法吗?

我不想清除历史。

在此处输入图片说明


在终端命令之前添加`(空格)不会使其脱离历史记录
沃伦(Warren)

2
@warren不,是的。您只需要在bash中启用该功能。
goweon

@firebat-正确:但是由于您必须启用它,所以它不一定在任何地方都可以使用 :)
warren

Answers:


24

将以下行添加到〜/ .bashrc

export HISTCONTROL=ignorespace

然后source ~/.bashrc刷新设置

这应该在bash中启用该功能。如果它不起作用,则可能必须将其添加到〜/ .bash_profile而不是〜/ .bashrc中,因为OS X加载它们的方式与我认为的linux有所不同。


我该如何使用两个选项?我想使用,export HISTCONTROL=erasedups,ignorespace但是我认为语法不起作用...
cwd11年

2
export HISTCONTROL=erasedups:ignorespace
goweon

2
但我认为实际上是export HISTCONTROL=ignoredups:ignorespace
goweon

3
“ ignoredups”设置将忽略重复的行。连续二十次键入“ ls”只会在历史上导致其中之一失败。但是,每次输入“ ls”,然后依次输入“ ps”和“ ls”将每次存储“ ls”和“ ps”-除非您具有bash 3并设置“ erasedups”。如果已设置,则不会在bash历史记录中输入任何重复项。- cyberciti.biz/faq/bash-for-loop-array
CWD

1
这对我不起作用。我曾经尝试都 export HISTCONTROL=erasedups:ignorespaceexport HISTCONTROL=ignoredups:ignorespaceexport HISTCONTROL=ignoredups:ignoreboth。但是我得到的是每个会话而不是跨会话的单个条目:即,如果在会话.bash_history开始时已经有一个命令,并且再次键入该命令,它将被添加到历史记录中(尽管对于该会话仅一次) 。如何确保在再次启动终端时不添加`.bash_history中已经存在的命令(如果再次输入)?
orome

1

如果您不关心使会话保持活动状态,则可以这样做:

kill -9 $$

它会终止当前会话,而不是注销,这[从理论上]意味着您的历史记录将不会被保存。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.