我试图在登录时显示一条消息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"
路径名周围带或不带引号。在所有情况下,都没有显示任何内容,并且“暂停”被忽略。
最后我加了一个暂停后复制文件的命令,文件就被复制了。那么,看起来echo
和pause
在启动文件中被忽略,大概是因为没有打开终端?
2) 然后我尝试将消息添加到/etc/profile
,但当我登录时该消息没有出现。
3) 然后我尝试将消息添加到/etc/motd
,但当我登录时该消息没有出现。
那么我该如何执行这个简单的任务呢?
答案1
您混淆了 的功能echo
。echo
将打印到标准输出文件描述符。如果您已经打开了一个终端,则该终端通常是您在其中运行的命令/脚本的标准输出。其本身echo
不会打开终端。
如果您想在启动时显示一条消息,更“图形化”的方式是使用类似以下内容的方法zenity
:
zenity --info --text "Hello, world!"
如果将其放入启动脚本中,您将看到一个显示该效果的消息框。
此外,motd
打印基于文本的登录消息(例如在虚拟终端上登录或通过 登录ssh
),因此它也不会执行您想要的操作。
如果您想在启动时专门打开一个终端,您可以让脚本执行如下操作:
xterm -e 'bash -c "echo My startup message;sleep 10"'
答案2
为什么不把这个 echo 添加到~/.bashrc
or中呢~/.bash_profile
?
更多信息请访问.bashrc 和 .bash_profile 的解释
~/.bashrc 和 ~/.bash_profile 都是调用 bash 时可能执行的脚本。当您使用以下命令运行 bash 时, ~/.bashrc 文件将被执行交互的不是登录 shell 的 shell。 ~/.bash_profile 仅在登录壳。