在进行了一些搜索后,我创建了一个~/.hushlogin
文件,并且它确实起作用了,但仅适用于新窗口。是否有办法使其适用于新标签页?
在 Mavericks 系统上,创建空文件~/.hushlogin
可以去掉新窗口和新标签页的“最后登录”行。
在我的 Mac 上它起作用。
这是在OS X 10.8.3上运行的。我还没有在其他版本上测试过,但只要终端具有上述选项,那么它应该可以工作。
在Terminal.app中,转到“首选项->设置”,选择您正在使用的配置文件。转到“Shell”选项卡,在“Startup”标题下检查“Run command:”并输入以下内容:
login -fpql your-username /bin/bash
将your-username
替换为您的实际Unix用户名。如果您使用的是非默认bash shell,请使用该shell的完整路径替换/bin/bash
(是的,即使您已在“首选项->启动”中设置了它)。
确保未选中“在shell内运行”复选框。
如果您选择了“仅当存在除登录shell和以下进程之外的进程时才提示关闭”的选项,请将“login”和“bash”添加到不会提示的进程列表中。
确保您有一个~/.bashrc
文件,因为这将是bash从现在开始使用的启动文件,而不是~/.bash_profile
。我只是使用此方法让一个文件引用另一个文件。您还需要确保它源自/etc/profile。
我们想要在没有.hushlogin
文件的情况下,使用-q
选项运行login
,以告诉它抑制“最后登录”消息。(如上所述,login
仅会在cwd中查找该文件,而不是您的主目录,因此您需要在每个要打开shell的目录中都有一个.hushlogin
文件,才能使该方法起作用。)
问题是,当您创建新的shell时(我使用homebrew版本的bash,因此在结尾处有奇怪的bash路径),终端会运行类似于login -pfl your-username /bin/bash -c exec -la bash /usr/local/bin/bash
的内容,缺少-q
标志。
不幸的是,没有直接更改终端使用的参数的方法,因此我们只能从终端的默认login -pfl
会话中使用login -pfql
来跳转到新的登录会话。这种方法不够优美,但它起作用。
我们需要使用-q
选项和bash路径,以保持“新窗口/选项卡打开:相同的工作目录”选项正常工作。如果您不关心该选项,则可以删除该标志和参数,并且可能避免上面的.bashrc
内容。
[[ -f /etc/profile ]] && . /etc/profile
。您可能还希望将类似 \[\e]0;\w\a\]
的内容添加到您的$PS1变量中。 - int3hlogin -fpql nhooyr /bin/zsh -l
。 -l
确保 shell 作为登录 shell 启动,因此您不需要自己源任何内容。 - nhooyr你可以在你的.bash_profile
中添加一个clear
来清空终端窗口。
clear
命令只是打印新行来“清屏”。 - gibatronic将~/.hushlogin
添加到系统中是可以的,除非你想在同一文件夹中打开一个新标签页或从Finder中精确地打开Terminal时,在这种情况下它将无效。
我不希望将正在运行的命令更改为另一个登录,因为其登录程序的机制很奇怪而且没有必要,如 login -> login -> zsh
。您可以在Activity Monitor中看到它,但是在退出交互式程序(如python repl)时,它也会出现在消息中,指出正在运行python、login和zsh。
在~/.zshrc
中加入clear
并不理想,因为在mac上它只会打印大量换行符(如果您向上滚动,则会看到它们)。
我目前找到的最佳方法是将printf '\33c\e[3J'
添加到~/.zshrc
中(或在Terminal/Preferences/Profiles/Shell/Startup/Run command
中,勾选Run inside shell
)。我选择将它放在~/.zshrc
文件的开头,因为启动命令是在其后运行的,如果~/.zshrc
文件比较重,则可以在执行printf之前短暂地看到Last Login消息。
~/.hushlogin
可以抑制新标签页和新窗口的“最后登录”消息。也就是说,这对我有效。login
(1),而不是shell。或者更准确地说,如果以特定方式调用shell(包括使用-l
选项启动它),那么bash将“仿佛已被调用为登录shell”(zsh可能具有类似的功能,尽管我现在找不到)。现在,如果Terminanl在您的OS X版本中打开一个新的选项卡,则shell实际上正在模拟打开登录shell,也许会出现此细节错误。但是,如果您拥有bash/zsh的10.8版本(即3.2.48 / 4.3.11),那么我不知道可能出了什么问题。login -pf
和两个 -bash
进程。 - gibatronic~
的目录打开一个新标签页时,我会收到登录消息,这似乎是因为终端始终在当前目录中查找 .hushlogin
!这就是为什么它只对我适用于新窗口,新窗口总是在 ~
中打开的原因! - gibatronic这是一个老问题,但我认为其他答案中的一个问题尚未解决。如果您不想显示登录信息,但想要从 /etc/motd
显示欢迎消息,则可以执行以下操作之一。
在第一种方法中,首先
cd ~
touch .hushlogin
然后,您可以将cat /etc/motd
添加到~/.zshrc
或~/.bashrc
的顶部,具体取决于您使用哪个shell。
第二种方法是添加
clear
cat /etc/motd
根据您使用的shell,将以下内容添加到~/.zshrc
或~/.bashrc
的前两行。
~/.bashrc
或~/.zshrc
文件末尾添加clear
命令。它会在初始化时清除终端中的任何初始化打印。这对我非常有效。在我的MacOS Big Sur 11.1上,它可以工作。
.hushlogin
文件。除非你在每个单独的目录都放置一个.hushlogin
文件,否则只有当你在~
目录下打开新标签时才能看到~/.hushlogin
。这与保留当前工作目录的功能直接冲突。 - davidA~
中,它可以在新标签页中工作。但是,如果我不在~
中,它就无法在新标签页中工作。 - Nicolas Barbulesco