Cách ưa thích để xác định xem một lời gọi ksh đã cho có đang chạy một trình bao tương tác không?Phát hiện trình bao tương tác bên trong tập lệnh ENV ksh
Tôi có một số lệnh trong tệp ENV
mà tôi muốn bỏ qua cho các lời gọi ksh không tương tác (ví dụ: khi thực thi tập lệnh trình bao).
tôi đã nhìn thấy gợi ý khác nhau, from:
if [[ $- = *i* ]]; then
# do interactive stuff
fi
... thậm chí không tìm nguồn cung ứng .kshrc
trừ khi vỏ được xác định là tương tác sử dụng này khó hiểu incantation:
ENVIRON=$HOME/.kshrc export ENVIRON
ENV='${ENVIRON[(_$-=1)+(_=0)-(_$-!=_${-%%*i*})]}' export ENV
Các thử nghiệm '-t N' cũng hoạt động trong Korn shell. –
Có phải '-t N' dứt khoát không? Có những trường hợp khác với '$ - = * i *' không? –
'test -t 0' là để kiểm tra, cho dù' stdin' là một thiết bị đầu cuối. Điều đó không giống như liệu shell có tương tác hay không. Bạn có thể chạy một shell-script, ví dụ, đọc từ tty. –