Se você quiser apenas assistir a saída do script, é possível redirecionar a saída do seu script para um arquivo e assistir a esse arquivo em outra janela:
# Run the script and log all output to a file
./watch.sh &> /var/log/watch.log &
# Watch the file, possibly in another terminal window
tail -f /var/log/watch.log
Na minha experiência, esse comportamento (gravar em um arquivo de log) é bem típico. Não me lembro de ter usado um aplicativo de linha de comando que começou a gerar outras janelas de terminal.
Dito isso, se você realmente quiser abrir uma nova janela de terminal a partir da linha de comando, isso dependerá do aplicativo do terminal. Existe um bom post sobre isso no site AskUbuntu StackExchange:
Em particular, veja esta resposta . Por exemplo, para o terminal do Gnome, você pode usar um comando como o seguinte:
gnome-terminal -x sh -c "./watch.sh; bash"
Se você quiser determinar programaticamente qual aplicativo de terminal está sendo usado, você pode querer consultar a seguinte postagem do AskUbuntu:
A solução aceita lá define a seguinte função:
which_term(){
term=$(perl -lpe 's/# Run the script and log all output to a file
./watch.sh &> /var/log/watch.log &
# Watch the file, possibly in another terminal window
tail -f /var/log/watch.log
/ /g' \
/proc/$(xdotool getwindowpid $(xdotool getactivewindow))/cmdline)
## Enable extended globbing patterns
shopt -s extglob
case $term in
## If this terminal is a python or perl program,
## then the emulator's name is likely the second
## part of it
*/python*|*/perl* )
term=$(basename "$(readlink -f $(echo "$term" | cut -d ' ' -f 2))")
version=$(dpkg -l "$term" | awk '/^ii/{print $3}')
;;
## The special case of gnome-terminal
*gnome-terminal-server* )
term="gnome-terminal"
;;
## For other cases, just take the 1st
## field of $term
* )
term=${term/% */}
;;
esac
version=$(dpkg -l "$term" | awk '/^ii/{print $3}')
echo "$term $version"
}