Я думаю, что когда вы не используете строку shebang, используется / bin / sh, которая обычно связана с bash.
когда я делаю ./my_script.csh вывод:
set a=0
echo "a is $a"
когда я делаю источник my_script.csh вывод:
a is
Почему это так . Как я знаю, что ./ выполнение использует новую оболочку.
a is 0
проверьте, установлена ли переменная "a" в вашей текущей оболочке: