Каков предпочтительный способ определить, работает ли данный вызов ksh в интерактивной оболочке?Обнаружение интерактивной оболочки в скрипте ksh ENV
У меня есть некоторые команды в файле ENV
, который я бы хотел пропустить для неинтерактивных вызовов ksh (например, при выполнении сценария оболочки).
Я видел предлагая в пределах from:
if [[ $- = *i* ]]; then
# do interactive stuff
fi
... даже не .kshrc
поиске, если оболочка не будет определено быть интерактивным, используя этот загадочный incantation:
ENVIRON=$HOME/.kshrc export ENVIRON
ENV='${ENVIRON[(_$-=1)+(_=0)-(_$-!=_${-%%*i*})]}' export ENV
Тесты «-t N» также работают в оболочке Korn. –
Является ли '-t N' окончательным? Существуют ли случаи, когда он отличается от «$ - = * i *»? –
'test -t 0' предназначен для тестирования, является ли' stdin' терминалом. Это не то же самое, что интерактивная оболочка. Вы можете запустить shell-скрипт, например, чтение из tty. –