Ao criar a conta, crie um arquivo chamado ~/.not_logged_in_yet
. Não precisa ter nenhum conteúdo, o arquivo só precisa existir:
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
Em seguida, crie um script chamado /etc/profile.d/check_first_login.sh
que contenha
#!/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
Quando você logar com bash como seu shell, o shell irá procurar /etc/profile
(veja Bash Startup Files no manual). /etc/profile
origina todos os *.sh
arquivos em /etc/profile.d/
, por isso, adicionar um arquivo a ele ficará visível para todos os usuários da sua máquina.
Você só deseja imprimir essa mensagem se a sessão for interactive . Imprimir qualquer coisa do seu perfil pode quebrar coisas supostamente não-interativas (como ssh-copy-id
- embora eu não saiba se isso é especificamente quebrado). A variável bash $-
contém algumas das configurações definidas com o comando set
:
$ bash -c 'echo $-; set -ex; echo $-'
hBc
+ echo ehxBc
ehxBc
Esta forma de expansão de parâmetro ${-#*i}
remove uma subseqüência principal terminando com um "i". $-
conterá apenas um "i" se for uma sessão bash interativa, portanto "$-"
não será igual a "${i#*i}"
se a sessão for interativa. Existem outras maneiras de testar isso: consulte Esse shell é interativo? - Eu usei este método porque é isso que o / etc / profile faz.