Linux

僅在第一個會話中執行終端命令

  • September 28, 2021

我想執行一個命令以在我的終端中顯示歡迎消息,但我希望它僅在桌面會話中的第一個終端會話中執行。我知道通過將命令添加到 .bashrc 來執行命令,但是這些命令會在每個終端會話中執行,並且我試圖將我的命令限制在第一個會話中。有誰知道如何做到這一點?謝謝你。

我正在使用 Ubuntu 21.10 測試版,如果有區別的話。

首先……在桌面會話中

因此,您需要與桌面會話進行互動!

想法:您檢查存在於您的會話下的服務。如果它不存在,則列印歡迎消息,然後啟動服務。

因此,編寫一個使用者服務,例如welcome-msg.service(如https://wiki.archlinux.org/title/systemd/User#Writing_user_units):

~/.config/systemd/user/welcome-msg.service :

[Unit]
Description=Welcome Message one-shot service

[Service]
Type=oneshot
RemainAfterExit=yes
ExecStart=/usr/bin/true

然後,在你的~/.bashrc

# Check whether the service has been started
if !  systemctl --user is-active --quiet welcome-msg; then
 echo "Welcome!"
 systemctl start welcome-msg
fi

引用自:https://unix.stackexchange.com/questions/670984