test.sh
não é executável. Assim, você pode executá-lo passando-o como um argumento para um shell, como em bash /home/username/test.sh
, mas não pode executá-lo diretamente como um programa como em seu comando de exemplo. Execute chmod +x /home/username/test.sh
para torná-lo executável.
Se test.sh
estiver fazendo coisas como configurar variáveis de ambiente, elas só sobreviverão durante o processo. Portanto, se você executar /home/username/test.sh; exec bash
, o shell interativo final não terá as variáveis de ambiente desse processo. Para manter as variáveis de ambiente, defina-as no processo bash pai: crie o script, em vez de executá-lo como um programa separado.
/bin/su username -c "/usr/bin/screen -dmS test bash -c '. ~/test.sh; exec bash'"