Если вы находитесь в оболочке, вы не просто вызываете файл .sh
- вы должны получить ту же ошибку в вашем собственном терминале.Ваша оболочка не ищет в текущем каталоге команд оболочки, поэтому вам нужно добавить некоторый контекст пути в ваш скрипт, чтобы оболочка знала, что это реально выполняемая программа, обычно путем добавления точки перед вашим скриптом, например, используйте
$ . testAllLatin.sh
вместо
$ testAllLatin.sh
Проверка Что означает точка перед командой в оболочке? на сайте Unix Stack Exchange.Верхний ответ суммирует:
Точка в этом контексте означает «источник» содержимого этого файла в текущей оболочке.Сама source
является встроенной командой оболочки.И source
и оператор точки являются синонимами.
Что касается Colab и Notebooks, магия %%shell
выполняет всю ячейку как команду в оболочке.Таким образом, вы должны просто иметь возможность использовать следующее в ячейке:
%%shell
. path/to/testAllLatin.sh
Взрыв вместо этого запускает только одну строку в оболочке, так что вы можете иметь Python с вкраплениями, если хотите.Таким образом, в ячейке вы могли бы сделать что-то вроде этого:
print('this is Python stuff', 5+10)
!. path/to/testAllLatin.sh
print('is it all latin?')
Вероятно, лучше всего держать ячейки оболочки отдельно, в любом случае.