Quelle est la méthode préférée pour déterminer si un appel ksh donné exécute un shell interactif?Détection du shell interactif dans le script ENV de ksh
J'ai quelques commandes dans un fichier ENV
que je voudrais ignorer pour les invocations ksh non interactives (par exemple lors de l'exécution d'un script shell).
que j'ai vu suggérer allant from:
if [[ $- = *i* ]]; then
# do interactive stuff
fi
... à ne pas approvisionner même .kshrc
à moins que le shell est déterminé à être interactif utilisant ce cryptique incantation:
ENVIRON=$HOME/.kshrc export ENVIRON
ENV='${ENVIRON[(_$-=1)+(_=0)-(_$-!=_${-%%*i*})]}' export ENV
Les tests '-t N' fonctionnent aussi dans le shell Korn. –
Est-ce que '-t N' est définitif? Y a-t-il des cas où il diffère de '$ - = * i *'? –
'test -t 0' est à tester, si' stdin' est un terminal. Ce n'est pas la même chose que si le shell est interactif. Vous pourriez lancer un shell-script, par exemple, en lisant à partir de tty. –