¿Cuál es la forma preferida de determinar si una invocación de ksh determinada está ejecutando un shell interactivo?Detección de shell interactivo dentro de la secuencia de comandos ksh ENV
Tengo algunos comandos en un archivo ENV
que me gustaría omitir para invocaciones ksh no interactivas (por ejemplo, al ejecutar un script de shell).
que he visto lo que sugiere que van from:
if [[ $- = *i* ]]; then
# do interactive stuff
fi
... que ni siquiera abastecimiento .kshrc
menos que el depósito se determina que es interactiva usando este críptico incantation:
ENVIRON=$HOME/.kshrc export ENVIRON
ENV='${ENVIRON[(_$-=1)+(_=0)-(_$-!=_${-%%*i*})]}' export ENV
Las pruebas '-t N' también funcionan en el shell Korn. –
¿Es '-t N' definitivo? ¿Hay casos en los que difiere de '$ - = * i *'? –
'test -t 0' es para probar, si' stdin' es un terminal. Eso no es lo mismo que si el shell es interactivo. Puede ejecutar un script de shell, por ejemplo, leyendo de tty. –