最初のセッションでのみ端末コマンドを実行する

最初のセッションでのみ端末コマンドを実行する

ターミナルにウェルカムメッセージを表示するコマンドを実行したいのですが、デスクトップセッション内の最初のターミナルセッションでのみ実行したいと思います。 .bashrcにコマンドを追加して実行する方法を知っていますが、これらのコマンドは各ターミナルセッションで実行されるため、コマンドを最初のコマンドのみに制限したいと思います。これを行う方法を知っている人はいますか?ありがとうございます。

違いがある場合は、Ubuntu 21.10ベータ版を使用しています。

答え1

まず...デスクトップセッションで

したがって、デスクトップセッションと対話する必要があります!

アイデア:セッション中にサービスを確認してください。存在しない場合は、ウェルカムメッセージを印刷してサービスを開始してください。

たとえば、ユーザーサービスを作成しますwelcome-msg.servicehttps://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

関連情報