ターミナルにウェルカムメッセージを表示するコマンドを実行したいのですが、デスクトップセッション内の最初のターミナルセッションでのみ実行したいと思います。 .bashrcにコマンドを追加して実行する方法を知っていますが、これらのコマンドは各ターミナルセッションで実行されるため、コマンドを最初のコマンドのみに制限したいと思います。これを行う方法を知っている人はいますか?ありがとうございます。
違いがある場合は、Ubuntu 21.10ベータ版を使用しています。
答え1
まず...デスクトップセッションで
したがって、デスクトップセッションと対話する必要があります!
アイデア:セッション中にサービスを確認してください。存在しない場合は、ウェルカムメッセージを印刷してサービスを開始してください。
たとえば、ユーザーサービスを作成します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
答え2
bashだけを使用するより簡単なバージョン:
# Define the path to the file that will store the last login date
LAST_LOGIN_FILE="$HOME/.last_login"
# Get the current date
CURRENT_DATE=$(date "+%Y-%m-%d")
# Read the last login date from the file
LAST_LOGIN=$(cat "$LAST_LOGIN_FILE" 2>/dev/null)
# Check if the current date is different from the last login date
if [[ "$CURRENT_DATE" != "$LAST_LOGIN" ]]; then
echo "Welcome ${USER}! Today is $(date)."
echo "$CURRENT_DATE" > "$LAST_LOGIN_FILE"
fi