직후에 사용자에게 메시지를 표시하는 방법이 있습니까?첫 번째로그인?
나는 그에게 "이 계정으로 처음 로그인하는 것입니다"라고 보여주고 싶습니다.
답변1
계정을 생성할 때 이라는 파일을 생성하세요 ~/.not_logged_in_yet
. 아무 것도 포함할 필요는 없으며 파일만 존재하면 됩니다.
touch ~user/.not_logged_in_yet # create the file
chown user ~user/.not_logged_in_yet # should be owned by the user
chmod u+rw ~user/.not_logged_in_yet # user must be able to delete it
그런 /etc/profile.d/check_first_login.sh
다음
#!/bin/bash
# only do this for interactive shells
if [ "$-" != "${-#*i}" ]; then
if [ -f "$HOME/.not_logged_in_yet" ]; then
echo "Welcome, this is your first login"
rm "$HOME/.not_logged_in_yet"
fi
fi
bash를 셸로 사용하여 로그인하면 셸이 소스 코드를 가져옵니다 /etc/profile
(참조:배시 시작 파일설명서에 있음). /etc/profile
소스의 모든 *.sh
파일 /etc/profile.d/
이므로 여기에 파일을 추가하면 컴퓨터의 모든 사용자가 볼 수 있습니다.
세션이 다음 상태일 때만 메시지를 인쇄하려고 합니다.인터렉티브. 귀하의 프로필에서 무엇이든 인쇄하면 비대화형으로 간주되는 콘텐츠가 깨질 수 있습니다(예를 들어 ssh-copy-id
이것이 특별히 깨질지는 모르겠지만). bash 변수에는 $-
다음 명령을 사용하여 설정된 일부 설정이 포함되어 있습니다 set
.
$ bash -c 'echo $-; set -ex; echo $-'
hBc
+ echo ehxBc
ehxBc
이 형태의 매개변수 확장은 ${-#*i}
"i"로 끝나는 선행 하위 문자열을 제거합니다. $-
대화형 bash 세션인 경우 "i"만 포함되므로 "$-"
세션이 대화형인 경우에만 동일하지 않습니다. "${i#*i}"
이를 테스트하는 다른 방법이 있습니다.이 쉘은 대화형입니까?-- 이 방법을 사용하는 이유는 /etc/profile이 수행하는 작업이기 때문입니다.