因此,我尝试自学 Unix,并将我的 MacOS 终端 shell 从默认的 zsh 更改为 bash,因为我学习的 Coursera 课程使用 Bash 脚本,我打算跟随的 CS 教育的第一学期也是如此。
我使用 brew install 下载了最新的 bash,并使用 chsh -s 命令将默认值更改为 bash。
我注意到,当我今天尝试学习 bash 历史记录时,我的 bash 似乎没有将历史命令存储到 .bashhistory 文件中。
一方面,我无法打开 bashhistory 文件,可能是因为 MacOS 的安全设置,但我只是注意到关闭终端后我丢失了所有历史记录。
这是我运行的代码
apples-MacBook-Pro:~ apple$ sudo cat ~/.bash_history
sudo zsh
apples-MacBook-Pro:~ apple$
不用说,我有更多的历史命令。此外,我不能使用向上箭头来检索历史命令,至少不是我在关闭旧终端并打开新终端之前输入的命令,即使我清楚地记得能够为 zsh shell 做到这一点。
顺便说一句,我相信历史大小设置为 500,而不是 1,这是我最初的怀疑。
apples-MacBook-Pro:~ apple$ echo $HISTSIZE
500
在此先感谢您的时间。
您的
ls -l
输出显示,就像上次一样,该文件由 root 拥有,并且没有授予其他任何人的权限:这很可能是因为您过去使用过
sudo -E bash
或类似的东西,它在 root 的 UID 下运行 bash但仍然使用您原来的 $HOME,所以它最终将 root 的历史记录写入您的主目录。(如果您没有使用 -E 选项,则可能是 macOS 的 sudo 配置为默认保留 $HOME,在这种情况下,-H 选项可以避免该问题。)删除文件并让 bash 正确地重新创建它,或者使用
sudo chown
将其所有者更改回您自己。用于
find ~ -user root -exec ls -ld {} \;
查找可能受到类似影响的其他文件。