我一直在使用bash进行工作,从来没有遇到过问题。现在,它不再在历史记录中保存任何命令。如果我打开一个窗口终端,请尝试一些命令,它的行为就好像一切正常,并使用箭头键向我显示历史记录。但是,如果我关闭窗口(并且应该将其保存在.bash_history文件中的时间)并打开另一个窗口,则没有最后命令的迹象。
我如何找出问题所在?或从空白重新设置所有内容。
.bash_sessions_disable
,就知道它恢复了默认行为
我一直在使用bash进行工作,从来没有遇到过问题。现在,它不再在历史记录中保存任何命令。如果我打开一个窗口终端,请尝试一些命令,它的行为就好像一切正常,并使用箭头键向我显示历史记录。但是,如果我关闭窗口(并且应该将其保存在.bash_history文件中的时间)并打开另一个窗口,则没有最后命令的迹象。
我如何找出问题所在?或从空白重新设置所有内容。
.bash_sessions_disable
,就知道它恢复了默认行为
Answers:
我这样做:
向.bash_profile
文件添加变量
SHELL_SESSION_HISTORY=0
重新启动终端,然后按我的意愿工作。(关闭终端后,它保存了命令)
PS我也使用HISTFILESIZE
和HISTSIZE
变量
HISTSIZE是在执行bash会话时存储在历史记录列表的内存中的行数或命令数。
HISTFILESIZE是(a)在会话启动时历史文件中允许的行或命令的数量,(b)在bash会话结束时存储在历史文件中以供将来会话使用的行数或命令数。
从OS X 10.11 El Capitan开始,系统安装的脚本/etc/bashrc_Apple_Terminal
与Terminal配合使用,以便为恢复为Resume的每个终端保存/恢复单独的命令历史记录。
阅读中的注释,以/etc/bashrc_Apple_Terminal
获取有关如何管理每终端命令历史记录以及如何对其进行自定义的说明。
如果您进行自定义,请PROMPT_COMMAND
确保将其连接到先前的值,这样就不会擦除系统提供的命令:
PROMPT_COMMAND="${PROMPT_COMMAND:+$PROMPT_COMMAND; }your_code_here"
如果安装EXIT
信号处理程序时trap
一定要做类似的事情(如果您不知道如何连接到先前的值,请从处理程序中调用shell_session_update,这有点麻烦)。
退出外壳程序时,此代码会将新命令保存到中的终端历史记录~/.bash_sessions
。要查看它是否遇到任何问题,可以使用exit
(或Control-D)手动退出外壳,而不是关闭终端。它记录进度消息。请注意它是否尚未完成,或者是否显示任何警告或错误消息。
通常,bashrc_Apple_Terminal
如果用户似乎执行了任何不兼容的自定义设置,则尝试检测和禁用每个会话的历史记录。听起来您可能已经找到了一个无法处理的问题。请考虑向Apple提交错误报告:https : //developer.apple.com/bug-reporting/
/etc/bashrc_Apple_Terminal
用的?”还是您的意思是“ BROM的PROMPT_COMMAND用途是什么?”?如果是后者,请参考详细记录的代码。或者,您应该对此进行另一个问答。
trap shell_session_update EXIT
一次,然后注销。/etc/bashrc_Apple_Terminal
脚本中的线索太无聊了,无法在此处包含。