Вчера в комментариях к посту про «set -k», задали вопрос про решение задачи. Чтобы понять какие опции включены в оболочке bash через «set», достаточно выполнять команду:

echo $-

В этой команде «$-» представляет текущие опции командной строки.

На экран выведется, что типа такого:

hikmBHs

Это все опции, которые на данный момент включены в оболочке Bash через команду «set». Ну и дальше уже можно искать проблемы с нелогичным поведением при выполнении команд. Каждая буква это опция, вызываешь хелп и смотришь что она означает.

Ну или через скрипт, как мы любим:

if [[ $- == *k* ]]; then
  echo "Опция -k установлена."
else
  echo "Опция -k не установлена."
fi

Про «$-» мало кто знает, в книжках я про неё никогда не встречал. В оболочке zsh эта штука тоже фурычит. Такие дела.