登录时如何显示消息?

登录时如何显示消息?

我试图在登录时显示一条消息Linux 薄荷 17.2。我尝试过各种方法都没有成功:

1)我创建了一个文件,/home/myusername/Desktop/startup-message.sh如下所示:

#!/bin/bash
echo "My startup message"
pause
exit

我使文件可执行并确保它可以从命令行运行,例如

bash "/home/myusername/Desktop/startup-message.sh"

或者

sh -c "/home/myusername/Desktop/startup-message.sh"

然后我使用 Mint 的“启动应用程序”功能并添加了一个新条目。我试过:

  "/home/myusername/Desktop/startup-message.sh"
  bash "/home/myusername/Desktop/startup-message.sh"
  sh -c "/home/myusername/Desktop/startup-message.sh"

路径名周围带或不带引号。在所有情况下,都没有显示任何内容,并且“暂停”被忽略。

最后我加了一个暂停后复制文件的命令,文件就被复制了。那么,看起来echopause在启动文件中被忽略,大概是因为没有打开终端?

2) 然后我尝试将消息添加到/etc/profile,但当我登录时该消息没有出现。

3) 然后我尝试将消息添加到/etc/motd,但当我登录时该消息没有出现。

那么我该如何执行这个简单的任务呢?

答案1

您混淆了 的功能echoecho将打印到标准输出文件描述符。如果您已经打开了一个终端,则该终端通常是您在其中运行的命令/脚本的标准输出。其本身echo不会打开终端。

如果您想在启动时显示一条消息,更“图形化”的方式是使用类似以下内容的方法zenity

zenity --info --text "Hello, world!"

如果将其放入启动脚本中,您将看到一个显示该效果的消息框。

此外,motd打印基于文本的登录消息(例如在虚拟终端上登录或通过 登录ssh),因此它也不会执行您想要的操作。

如果您想在启动时专门打开一个终端,您可以让脚本执行如下操作:

xterm -e 'bash -c "echo My startup message;sleep 10"'

答案2

为什么不把这个 echo 添加到~/.bashrcor中呢~/.bash_profile

更多信息请访问.bashrc 和 .bash_profile 的解释

~/.bashrc 和 ~/.bash_profile 都是调用 bash 时可能执行的脚本。当您使用以下命令运行 bash 时, ~/.bashrc 文件将被执行交互的不是登录 shell 的 shell。 ~/.bash_profile 仅在登录壳。

相关内容