source
нельзя использовать для запуска любого сценария, который не написан на родном языке оболочки, в которой вы вызываете его на .
То есть на bash source
можно использовать только для запуска сценариев bash. Он не может запускать сценарии TCL. Это по своей природе: source
делает пропускает запуск дополнительной оболочки или другого интерпретатора (таким образом, заставляя игнорировать ваш #!/usr/bin/env tclsh
shebang), и запускает код в оболочке, которую вы уже в.
Если эта оболочка не может выполнить собственный синтаксический анализ языка, на котором написан исходный текст сценария, следует ожидать синтаксических ошибок - содержимое, написанное на одном языке, анализируется интерпретатором, предназначенным исключительно для поддержать другой. Префикс bash:
в вашем сообщении об ошибке дает понять, что это так на практике; bash, а не tclsh
, пытается интерпретировать сценарий.