Похоже, что файлы Tcl были настроены для запуска tclsh (который по умолчанию не загружает пакет Tk), а не wish (который загружает Tk).Самое простое решение - явно загрузить его в начале вашего скрипта с:
package require Tk
во всех случаях;тогда вы либо будете работать так, как вы ожидаете, либо вы получите явный сбой, который говорит, что Tk не может быть загружен (вместо более загадочного сообщения о том, что нет команды button
).
Канонически, рекомендуемый способ сделать это будет:
#! /usr/bin/env wish
package require Tk
button .hello -text "Hello, World!" -command { exit }
pack .hello
, поскольку это позволяет найти wish
на пути, а не жестко закодировано в определенном месте.