Мне нужно сделать интерактивную оболочку программно (в Node.js, но любой язык будет делать). Самым важным является то, что я хочу, чтобы начать REPL любого языка (узел, рубиновый, Эрл и т.д.) и быть в состоянии получить AutoCompletionЗапуск интерактивной оболочки программно
pri\t
, который я хочу, чтобы получить выход в STDERR (например)
print() println() printf()
И поскольку это на языке REPL compgen
не может быть использован.
Я пробовал много способов, но кажется, что он терпит неудачу, потому что оболочка не может быть интерактивной, а программно открыта. Launchin /bin/sh -i
просто yeilds ошибки как:
bash: cannot set terminal process group (XXXX): Inappropriate ioctl for device
Я слышал, что я не могу запустить интерактивную оболочку без терминала, но при выполнении SSH автодополнения делает работу, которая означает, что можно эмулировать в некотором роде.
Буду признателен за вашу помощь. Я не могу продолжать свою работу, не найдя для этого решения.
Могу ли я предположить, что он предустановлен в каждой системе Linux? –
@KrzysztofWende Согласно странице man для '' forkpty'', она не является стандартной, но присутствует в libc5 и glibc2, поэтому было бы безопасно предположить, что она присутствует в любой современной Linux-системе. – randomusername
ДА! Наконец, это работает. Спасибо! Когда вопрос будет доступен для награды, я дам вам 50 очков репутаций. Это первый ответ, который действительно сработал. –