经过一番搜索后,我创建了一个~/.hushlogin
文件并且它可以工作,但仅适用于新窗口。有没有办法让它也适用于新标签?
6 回答
在 Mavericks 上,创建空文件 ~/.hushlogin
会删除新窗口和新标签的“上次登录”行。
在我的 Mac 上它可以工作。
解决方案
这是运行 OS X 10.8.3。我没有在其他版本上测试过它,但只要终端有上述选项,它应该可以工作。
在 Terminal.app 中,转到 Preferences->Settings 并选择您正在使用的配置文件。转到“Shell”选项卡,在“启动”标题下,选中“运行命令:”并输入框:
login -fpql your-username /bin/bash
替换
your-username
为您的实际 Unix 用户名。如果您使用默认 bash shell 以外的 shell,请替换/bin/bash
为该 shell 的完整路径(是的,即使您已经在 Preferences->Startup 中设置了它。)确保未选中“在外壳内运行” 。
如果您选择了“关闭前提示:仅当存在除登录 shell 和:以外的进程时”选项,则将“登录”和“bash”添加到它不会提示的进程列表中。
确保你有一个
~/.bashrc
文件,因为这将是 bash 从现在开始在启动时使用的文件,而不是~/.bash_profile
. 我只有一个文件使用此方法引用另一个文件。您还需要确保它来自 /etc/profile。
解释
我们希望运行login
选项-q
来告诉它抑制“上次登录”消息,即使在没有.hushlogin
文件的情况下也是如此。(如上所述,login
只会在 cwd 中查找该文件,而不是您的主目录,因此您需要.hushlogin
在打开 shell 的每个目录中都有一个文件,该方法才能工作。)
问题是终端运行类似于当您创建一个缺少标志login -pfl your-username /bin/bash -c exec -la bash /usr/local/bin/bash
的新 shell 时(我使用的是自制版本的 bash,因此最后出现了奇怪的 bash 路径) 。-q
不幸的是,没有办法直接改变终端使用的参数,所以我们只是login -pfql
从终端的默认会话中蹦床一个新的登录login -pfl
会话。不优雅,但它有效。
我们需要有-q
选项和 bash 路径以保持“新窗口/选项卡打开方式:相同的工作目录”选项正常工作。如果您不关心该选项,则可以删除该标志和参数,并且可能避免上述.bashrc
内容。
你可以在clear
你的.bash_profile
这可能取决于操作系统版本。在终端 2.3(在 10.8)上,触摸文件~/.hushlogin
会抑制新选项卡和新窗口的“上次登录”消息。也就是说,它对我有用。
以防万一有助于弄清楚发生了什么(如果您不知道),请注意“最后登录”消息原则上来自login
(1),而不是外壳。或者,更准确地说,如果以特定方式调用 shell(包括使用-l
选项启动它),那么 bash 将“就像作为登录 shell 被调用一样”(zsh 可能具有类似的功能,尽管我可以现在找不到)。现在,可能是当 Terminanl 在您的 OS X 版本中打开一个新选项卡时,shell 正在有效地模拟打开登录 shell,并且可能会弄错这个细节。但是如果你有 10.8 版本的 bash/zsh(即 3.2.48 / 4.3.11),那我不知道会出现什么问题。
添加~/.hushlogin
很好,除非您想在同一文件夹中打开一个新选项卡,或者在确切的文件夹上从 Finder 打开终端,在这种情况下它将不起作用。
由于奇怪的不必要的方案,我想避免将正在运行的命令更改为另一个登录名login -> login -> zsh
。您可以在 Activity Monitor 中看到它,但它也会在您退出交互式程序(如 python repl)时显示在 python、login 和 zsh 正在运行的消息中。
放入并不理想,因为在 mac 上它只会打印很多换行符(如果你向后滚动,你会看到它们)clear
。~/.zshrc
到目前为止,我发现的最好方法是添加printf '\33c\e[3J'
到~/.zshrc
(或Terminal/Preferences/Profiles/Shell/Startup/Run command
选中Run inside shell
)。我选择了~/.zshrc
文件开头,因为启动命令在它之后运行,如果~/.zshrc
文件很重,您可以在 printf 执行之前简要地看到 Last Login 消息。
一个不更改与登录相关的任何内容的简单解决方案就是在您的or文件的末尾添加clear
命令。它将从任何初始化打印中清除初始化中的终端。它非常适合我。~/.bashrc
~/.zshrc