因此,我正在尝试自学 Unix,并且我将 MacOS 终端 shell 从默认的 zsh 更改为 bash,因为我学习的 Coursera 课程使用 Bash 脚本,我打算跟随的 CS 教育第一学期课程也使用 Bash 脚本。
我使用 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
在此先感谢您的时间。
答案1
您的ls -l
输出显示,就像上次一样,该文件归 root 所有,并且没有授予任何其他人的权限:
-rw------- 1 root staff 9 Apr 2 2021 /Users/Yichen/.bash_history
这很可能是因为你sudo -E bash
以前使用过或类似的东西,在 root 的 UID 下运行 bash但仍然使用您原来的 $HOME,因此它最终将 root 的历史记录写入您的主目录。(如果您没有使用 -E 选项,那么可能是 macOS 的 sudo 配置为默认保留 $HOME,在这种情况下 -H 选项可以避免此问题。)
要么删除该文件并让 bash 正确地重新创建它,要么使用sudo chown
它将其所有者改回为您自己。
用于find ~ -user root -exec ls -ld {} \;
查找可能受到类似影响的其他文件。