如何在OS X El Capitan中禁用Bash会话

Why*_*rrh 36 macos bash osx-elcapitan

OS X El Capitan(10.11 Beta)中的一个看似新功能的是Bash会话(终端会话).我现在有一个~/.bash_sessions包含历史文件的目录,我的HISTFILEHISTIGNOREenvars正在被覆盖.如何禁用所有这些功能?

Why*_*rrh 44

如果手动启动新的Bash会话(即bash -xl),您可以看到登录时运行的内容.

您将在输出中看到以下行:

....
+++ '[' '!' -e /Users/username/.bash_sessions_disable ']'
Run Code Online (Sandbox Code Playgroud)

您可以.bash_sessions_disable在主目录中创建一个文件以禁用此功能.


Chr*_*age 28

此行为在/etc/bashrc_Apple_Terminal.中定义.它包含文档注释,描述它的作用以及如何自定义它.

您可以通过SHELL_SESSION_HISTORY=0~/.bashrc脚本中设置来禁用per-terminal-session命令历史记录功能,如下所述:

您可以通过将SHELL_SESSION_HISTORY设置为0来禁用此行为并共享单个历史记录.有一些常见的用户自定义通过在每个提示符处操作历史记录来安排在运行的shell之间共享新命令,并且它们通常包括'shopt -s histappend'; 因此,如果启用了histappend shell选项,则默认情况下会禁用每会话历史记录.您可以通过将SHELL_SESSION_HISTORY设置为1来显式启用它.

请注意,虽然您可以通过创建禁用整个会话状态恢复机制~/.bash_sessions_disable,但这不是必需的,只是禁用每会话命令历史记录功能,不建议这样做.


che*_*one 8

总而言之,这与Apple的Resume功能有关.启用此功能后,当您退出应用程序或重新启动时,下次应用程序打开时,它将打开以前打开的窗口.

关于终端,必须有三件事情可以实现:

  1. $HOME/.bash_sessions_disable必须存在
  2. System Preferences/General/Close Windows when quitting an app必须进行检查.
  3. 重新启动时,选择Reopen windows.

当您重新打开终端时,它将在相同的屏幕位置重新打开之前相同的窗口和标签.此外,如果您已选中Terminal/Preferences/your-window-type/Windows/Resume/Restore-text-when-reopening-windows,它将恢复每个屏幕上的文本.

最后,这与OP的问题有关,如果满足以下条件,它将恢复每个窗口/选项卡中的历史记录:

  1. SHELL_SESSION_HISTORY 未设置或设置为1
  2. shopt histappend 没有设定
  3. HISTTIMEFORMAT 没有设定

如果SHELL_SESSION_HISTORY显式设置为1 in .bashrc,则覆盖最后两个要求,即shopt histappendHISTTIMEFORMAT可以设置.

此外,需要注意HISTSIZEHISTFILESIZE变量.它们不应该太大或太小,有些人建议让它们不设置,以便它们采用Apple的默认值.