Como você está usando "su -" o shell que está sendo executado está fingindo que é um shell de login (executando /etc/profile
do sistema, o perfil do usuário, como .profile
ou .bash_profile
e assim por diante). Um desses scripts está gerando a seqüência de escape (a string Esc]P
) e imprimindo esse resultado para stdout. Não deveria fazer isso.
O que deve ser feito é verificar se o shell é interativo, e então - e somente então! - deve gerar a seqüência de escape.
A melhor maneira de procurar por um shell interativo é verificar o valor de "$ -" e ver se ele contém a letra i
- se isso acontecer, o shell é interativo e, se não, a concha não é. Eu normalmente uso algo assim:
case "$-" in
*i*) # Here if the shell is interactive
;;
*) # Here otherwise
;;
esac
Você precisará determinar o que está gerando essa seqüência de escape. Os culpados comuns são echo
, tput
ee outros comandos que devem modificar as configurações do terminal. Eu fiz alguns Google'ing mas não consegui achar aquela sequência de escape em particular, então eu não posso fornecer pistas sobre onde / o que procurar.
Claro, por que você está usando su -
? Apenas use sudo -u user1
e elimine uma etapa extra (seus requisitos podem incluir a execução de .profile de user1
; eu não sei e você não disse).