macOS Catalina /bin/sh 与 /bin/bash 以及显示带有前哈希值的历史记录

macOS Catalina /bin/sh 与 /bin/bash 以及显示带有前哈希值的历史记录

不是一个真正的问题,而是一个观察。当我在 Linux 上执行 sys ad 时,我喜欢在命令前加上一个哈希“#”来校对我要执行的内容,并留下一个面包屑,以便我稍后可以返回。

我最近发现,在 macOS Catalina 上(这是我现在的主要工作机器),它bash不会在历史文件中打印带有前导哈希的行,而在其他版本的 Linux 中似乎并非如此,例如 RHEL、Ubuntu

$ echo $SHELL
/bin/bash
$ echo foo
foo
$ #echo bar
$ !:p
echo foo


$ echo $SHELL 
/bin/sh
$ echo foo
foo
$ #echo bar
$ !:p
#echo bar
$ sw_vers
ProductName:    Mac OS X
ProductVersion: 10.15
BuildVersion:   19A602

输出$HISTIGNORE $HISTCONTROL

当然

$ echo 0e"$SHELL\n$HISTIGNORE\n$HISTCONTROL"
/bin/sh


$ echo -e "$SHELL\n$HISTIGNORE\n$HISTCONTROL"
/bin/bash


答案1

这似乎是 Catalina 独有的。我还没有升级。

$ echo 

$ # hello 
$ !:p 
# hello  
$

我也使用这个“功能”,因此找到一种方法来解决这个问题会很有用。

为了完整性:

$ echo \"$HISTIGNORE\" 
""
$ echo \"$HISTCONTROL\" 
""

答案2

我只想回答我的问题

@egmont 你说得对,bash 附带的版本真的很旧

我的解决方案是升级 bash。

Medium 上的这篇文章清楚地解释了如何在 MacOS 上升级 bash,这也是我让以 开头的命令#再次打印在历史记录中的方法。

https://itnext.io/upgrading-bash-on-macos-7138bd1066ba

我将发布使用 Homebrew 在 MacOS 中升级 bash 的步骤

$ brew install bash 
$ sudo echo /usr/local/bin/bash >> /etc/shells 
$ sudo chsh -s /usr/local/bin/bash # for the current user

以下是升级 bash 前后的一些测试

升级 bash 之前

$ echo foo
foo
$ #echo bar
$ !:p
echo foo
$ bash --version
GNU bash, version 5.0.11(1)-release (x86_64-apple-darwin19.0.0)
Copyright (C) 2019 Free Software Foundation, Inc.
License GPLv3+: GNU GPL version 3 or later <http://gnu.org/licenses/gpl.html>

This is free software; you are free to change and redistribute it.
There is NO WARRANTY, to the extent permitted by law.

升级 bash 后

$ echo foo 
foo
$ #echo bar
$ !:p
#echo bar
$ bash--version
-bash: bash--version: command not found
Geralds-MacBook-Pro:~ gerald$ bash --version
GNU bash, version 5.0.11(1)-release (x86_64-apple-darwin19.0.0)
Copyright (C) 2019 Free Software Foundation, Inc.
License GPLv3+: GNU GPL version 3 or later <http://gnu.org/licenses/gpl.html>

This is free software; you are free to change and redistribute it.
There is NO WARRANTY, to the extent permitted by law.

相关内容