63

经过一番搜索后,我创建了一个~/.hushlogin文件并且它可以工作,但仅适用于新窗口。有没有办法让它也适用于新标签?

4

6 回答 6

116

在 Mavericks 上,创建空文件 ~/.hushlogin会删除新窗口和新标签的“上次登录”行。

在我的 Mac 上它可以工作。

于 2013-11-30T17:41:16.903 回答
53

解决方案

这是运行 OS X 10.8.3。我没有在其他版本上测试过它,但只要终端有上述选项,它应该可以工作。

  1. 在 Terminal.app 中,转到 Preferences->Settings 并选择您正在使用的配置文件。转到“Shell”选项卡,在“启动”标题下,选中“运行命令:”并输入框:

    login -fpql your-username /bin/bash
    

    替换your-username为您的实际 Unix 用户名。如果您使用默认 bash shell 以外的 shell,请替换/bin/bash为该 shell 的完整路径(是的,即使您已经在 Preferences->Startup 中设置了它。)

  2. 确保未选中“在外壳内运行” 。

  3. 如果您选择了“关闭前提示:仅当存在除登录 shell 和:以外的进程时”选项,则将“登录”和“bash”添加到它不会提示的进程列表中。

  4. 确保你有一个~/.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内容。

于 2013-04-23T23:53:12.943 回答
14

你可以在clear你的.bash_profile

于 2014-08-27T16:57:25.283 回答
7

这可能取决于操作系统版本。在终端 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),那我不知道会出现什么问题。

于 2013-04-02T17:44:22.737 回答
2

添加~/.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 消息。

于 2021-11-10T15:03:40.947 回答
1

一个不更改与登录相关的任何内容的简单解决方案就是在您的or文件的末尾添加clear命令。它将从任何初始化打印中清除初始化中的终端。它非常适合我。~/.bashrc~/.zshrc

于 2021-08-05T15:52:51.187 回答