Я думаю, что когда вы не используете строку shebang, используется / bin / sh, которая обычно связана с bash.

когда я делаю ./my_script.csh вывод:

set a=0 
echo "a is $a"

когда я делаю источник my_script.csh вывод:

a is 

Почему это так . Как я знаю, что ./ выполнение использует новую оболочку.

a is 0 

проверьте, установлена ​​ли переменная "a" в вашей текущей оболочке:

Ответы на вопрос(2)

Ваш ответ на вопрос