첫 번째 세션에서만 터미널 명령 실행

첫 번째 세션에서만 터미널 명령 실행

터미널에 환영 메시지를 표시하는 명령을 실행하고 싶지만 데스크톱 세션 내의 첫 번째 터미널 세션에서만 실행되기를 원합니다. .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

관련 정보