删除终端中新标签的"上次登录"消息

gib*_*nic 45 macos terminal

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

Nic*_*sco 87

在Mavericks上,创建空文件  ~/.hushlogin会删除"上次登录"行,用于新窗口和新选项卡.

在我的Mac上它有效.

  • 问题是当打开一个启用了"相同工作目录"的新选项卡时,会在当前目录中搜索`.hushlogin`.除非你在每个目录中放置一个`.hushlogin`,否则当你在`~`时打开一个新标签时,它只会看到`〜/ .hushlogin`.这与保留当前工作目录的功能直接冲突. (22认同)
  • 它确实*不能在Yosemite(对我来说)下工作.在不同于`~`的文件夹中打开一个新选项卡,您将看到它. (10认同)
  • @gibatronic — 它始终适用于新窗口。如果我在 `~` 中,它适用于新标签。唉,如果我不在 `~` 中,它不适用于新选项卡。 (2认同)
  • 优胜美地的作品也谢谢你! (2认同)

int*_*t3h 39

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

  1. 在Terminal.app中,转到首选项 - >设置,然后选择您正在使用的配置文件.转到"Shell"选项卡,在"Startup"标题下,选中"Run command:"并进入框中:

    login -fpql your-username /bin/bash
    
    Run Code Online (Sandbox Code Playgroud)

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

  2. 确保未选中 "Run inside shell" .

  3. 如果您具有"关闭前提示:仅当选择了登录shell和:以外的进程"选项时,请将"login"和"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内容.

  • 在〜/ .bashrc中,添加一行`[[-f/etc/profile]] &&./ etc/profile`位于最顶层.您可能还想在$ PS1变量中添加类似`\ [\ e] 0;\w\a \]`的内容. (6认同)
  • 对我来说最有效的是“login -fpql nhooyr /bin/zsh -l”。`-l` 确保 shell 作为登录 shell 启动,因此您不需要自己获取任何内容。 (6认同)
  • 有一个问题$ PATH不包括一些路径,但使用@ int3h方法干净地修复.谢谢! (5认同)
  • nope ...总是打开我的家庭目录,如果我回滚这些更改或使用另一个工作正常的配置文件. (2认同)

s-v*_*ent 17

添加~/.hushlogin很好,除非您想在同一文件夹中打开新选项卡,或者从确切文件夹上的 Finder 打开终端,在这种情况下它将不起作用。

由于奇怪的不必要的方案,我想避免将正在运行的命令更改为另一个登录名login -> login -> zsh。您可以在活动监视器中看到它,而且当您退出交互式程序(例如 python repl)时,它也会显示在 python、login 和 zsh 正在运行的消息中。

输入并不理想clear~/.zshrc因为在 mac 上它只会打印很多换行符(如果你向后滚动,你会看到它们)。

到目前为止,我发现的最好方法是添加printf '\33c\e[3J'~/.zshrcTerminal/Preferences/Profiles/Shell/Startup/Run command选中Run inside shell)。我选择了文件开头~/.zshrc,因为启动命令在其后运行,如果~/.zshrc文件很大,您可以在执行 printf 之前短暂看到“上次登录”消息。

  • 这应该是 2022 年公认的答案。 (8认同)
  • 我仍然会在一瞬间看到记录的历史消息(以及来自我公司的关于计算机是他们的财产的消息)的闪现,但随后它消失并且看起来很好。太糟糕了,没有办法让它将其视为每个目录中都有一个 .hushlogin 文件。 (2认同)

aeo*_*nth 11

你可以添加一个clear到你的.bash_profile

  • @gibatronic尝试`reset`或⌘+ K(Command-K) (6认同)
  • 这是一个很好的选择,但我不喜欢“clear”只是打印新行来“清除”屏幕。 (2认同)

Nor*_*ray 7

这可能取决于操作系统版本.在终端2.3(在10.8上),触摸该文件会~/.hushlogin抑制新标签和新窗口的"上次登录"消息.也就是说,它适合我.

万一它有助于计算正在发生的事情(如果您不知道),请注意"最后登录"消息原则上来自login(1),而不是shell.或者,更准确地说,如果以特定方式调用shell(包括使用该-l选项启动它),那么bash将"就像它已被调用为登录shell一样"(zsh可能具有类似的功能,尽管我可以现在找不到.现在,可能是当Terminanl在您的OS X版本中打开一个新选项卡时,shell正在有效地模拟打开登录shell,并且可能导致这个细节错误.但是如果你有10.8版本的bash/zsh(即3.2.48/4.3.11),那么我不知道可能会有什么不妥.

  • 啊哈:听起来似乎有道理.检查您的终端首选项,然后 - 有一个设置'新标签打开...',您可以设置'默认工作目录'. (2认同)