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