A expansão de $user
na linha de comando sudo
está acontecendo logo antes do comando touch
ser executado. No ambiente que está ativo naquele momento (que provavelmente foi limpo por sudo
), seu valor é indefinido e, portanto, se expande para a cadeia vazia. É aqui que você obtém o arquivo chamado .file
de.
Para criar o arquivo com o nome adequado, use aspas duplas em torno do comando touch
. Isso garantirá que $user
seja expandido antes de sudo
ser chamado:
sudo runuser -l test2 -c "touch /home/test2/$user.file"
Nota: não sei o que é runuser
. Eu teria usado
sudo -u test2 touch "/home/test2/$user.file"