为什么会这样?
MacOS和Ubuntu的开箱即用配置不同,可以处理bash命令历史记录中的重复项。这些配置存储在许多所谓的“ 点文件 ”中。它们采用〜/ .bash *的形式以及系统范围内的/ etc / profile。所有这些文件都可以根据您的喜好进行定制,并在交互式外壳,登录外壳,远程外壳等之间进行区分。这些文件以特定的顺序读取并具有特定的功能。
如何在macOS上获得相同的行为?
如果您只想单次定制“忽略命令行的精确重复”,则可以使用Allan的答案,即在例如bash_profile文件中添加一行。没有“正确的方法”,而是无数的选择。
如果这不是bash的唯一定制,那么这可能不是最佳选择:
其他一些注意事项:
- 图形应用程序可用的所有内容或sh(或bsh调用的bash)都必须位于〜/ .profile中
- 〜/ .bashrc不得输出任何内容
- 只有登录外壳可用的所有内容都应放在〜/ .profile中
- 确保〜/ .bash_login不存在。
这意味着,当事情变得更复杂的是不错的主意,以分散的的定制成多个文件,他们每个人的专业和在内容上高度有序的:
exports
为了简化监督,所有人都可以驻留在自己的文件中。
在用户目录的根目录下创建一个由bash读取的文件,例如.exports
,该文件包含:
# Omit duplicates and commands that begin with a space from history.
export HISTCONTROL='ignoreboth';
这需要“来源”,以便在交互式启动时由bash读取文件:
采购文件
如果您有许多Shell配置,则可能需要将其拆分为几个子文件,并使用内置的源代码从.bashrc中加载它们并添加source ~/.exports
到其中。
或者,确保在加载之前文件确实存在
if [ -f ~/.exports ]; then
. ~/.exports
fi
该命令. ~/.exports
将~/.exports
在当前运行的shell上下文中提供源代码。
这对于添加别名特别有用,单独的文件使您在进行更改时更容易重新加载它们。
zsh
甚至进一步使用各种脚本自定义zsh,这是可能且普遍的。