Macos 如何在OS X El Capitan中禁用Bash会话
OS X El Capitan(10.11测试版)中的一个看似新的功能。我现在有一个包含历史文件的Macos 如何在OS X El Capitan中禁用Bash会话,macos,bash,osx-elcapitan,Macos,Bash,Osx Elcapitan,OS X El Capitan(10.11测试版)中的一个看似新的功能。我现在有一个包含历史文件的~/.bash\u sessions目录,并且我的HISTFILE和HISTIGNOREenvars正在被覆盖。如何禁用所有这些功能?如果手动启动新的Bash会话(即Bash-xl),您可以看到登录时运行的是什么 您将在输出中看到以下行: 。。。。 +++'[''!-e/Users/username/.bash\u sessions\u disable'] 您可以在主目录中创建一个.bash\u
~/.bash\u sessions
目录,并且我的HISTFILE
和HISTIGNORE
envars正在被覆盖。如何禁用所有这些功能?如果手动启动新的Bash会话(即Bash-xl
),您可以看到登录时运行的是什么
您将在输出中看到以下行:
。。。。
+++'[''!-e/Users/username/.bash\u sessions\u disable']
您可以在主目录中创建一个
.bash\u sessions\u disable
文件来禁用此功能。此行为在/etc/bashrc\u Apple\u Terminal
中定义。它包含文档注释,描述它的功能以及如何自定义它
您可以通过在~/.bashrc
脚本中设置SHELL\u session\u history=0来禁用每终端会话命令历史记录功能,如下所述:
您可以通过设置禁用此行为并共享单个历史记录
SHELL\u会话\u历史记录为0。有一些常见的用户自定义
安排在运行的shell之间共享新命令的
在每个提示下操作历史记录,它们通常包括
"shopt-s histappend";;因此,如果histappend shell选项为
已启用,默认情况下禁用每会话历史记录。你可以
通过将SHELL_SESSION_HISTORY设置为1显式启用它
请注意,尽管您可以通过创建~/.bash\u sessions\u disable
来禁用整个会话状态恢复机制,但仅禁用每会话命令历史记录功能是不必要的,不建议这样做。总之,这与Apple的功能有关。启用此功能后,退出应用程序或重新启动应用程序时,应用程序下次打开时,将打开以前打开的窗口
关于航站楼,要做到这一点,必须有三件事:
$HOME/.bash\u sessions\u disable
必须不存在
退出应用程序时,必须选中“系统首选项”/“常规”/“关闭窗口”
“不”李>
重新打开windows
SHELL\u会话\u历史记录
未设置或设置为1shopt histappend
HISTTIMEFORMAT
未设置SHELL\u SESSION\u HISTORY
在.bashrc
中显式设置为1,则覆盖最后两个要求,即可以设置shopt histappend
或HISTTIMEFORMAT
此外,需要注意
HISTSIZE
和HISTFILESIZE
变量。它们不应该太大或太小,一些人建议不设置它们,以便采用苹果的默认值 到目前为止,关于这个主题的所有文章都是准确和有用的,应该使用前面提到的技巧来代替这个主题。我将要提到一种完全的核方法,只是为了娱乐性的选择,也是为了扩大对这个主题的进一步理解
我获得这些知识的唯一原因是,我正在寻找一种替代方案,以避免需要创建一个~/.bash\u sessions\u disable
文件;相反,我更希望通过在现有的~/.bash\u配置文件中添加一些行来防止会话行为的发生。不幸的是,如果没有核武器,这是不可能的,因此官方的答案仍然是最好的办法
摘要
当Bash第一次在MacOS上启动时,它将首先发出/etc/profile
,这反过来又发出/etc/bashrc
。该文件的内容包括以下行:
[ -r "/etc/bashrc_$TERM_PROGRAM" ] && . "/etc/bashrc_$TERM_PROGRAM"
$TERM_程序
环境变量仅由苹果的终端应用程序设置。打印该变量的值将返回Apple\u Terminal
。换言之,/etc/bashrc
文件正在尝试源文件/etc/bashrc\u Apple\u-Terminal
,如果它既存在又可读。在这个文件中,MacOS执行其特殊的Bash会话处理,以与操作系统的恢复功能相结合
在所有这些之后,Bash将为用户在其主目录中的任何配置(如~/.Bash\u profile
或~/.bashrc
)提供源代码。如上所述,如果不执行其他人提到的操作,即将$SHELL\u SESSION\u HISTORY
设置为0
以消除基于会话的历史记录,则无法在纯配置级别上覆盖/etc/bashrc\u Apple\u Terminal
文件中完成的所有工作,并创建一个~/.bash\u sessions\u disable
,以防止每次苹果终端启动时创建.bash\u sessions
目录
核方法
消除任何这种新的MacOS功能的两种可能的替代方法是:1)从/etc/bashrc
文件中删除最后一行,或2)重命名或删除/etc/bashrc\u Apple\u终端
这样做之后,苹果的终端应用程序的行为将不再与非苹果终端仿真器有所不同。我喜欢访问比以前多一点的历史,但它对自己有任何限制吗?看起来每个终端调用都有两三个文件