У меня есть файл, содержащий команды bash, и я читаю их одну за другой и вызываю eval для их запуска.Это работало нормально, пока я не попытался запустить "emacs -nw".Я упростил проблему в следующих случаях.Кто-нибудь может объяснить, почему команды emacs не работают и как это исправить?Я подозреваю, что это что-то с кавычками и / или дефисом, но не может выяснить проблему, и другие команды с пробелами в них работают нормально.
Рассмотрим следующие случаи:
>> cmd="emacs -nw"; echo $cmd; eval $cmd;
Это работает как ожидалось.Emacs открывается в текущей оболочке.
>> cmd="ls /tmp"; echo $cmd; eval $cmd;
Это работает как положено.Я вижу содержимое /tmp.
>> echo "emacs -nw" > /tmp/cmds; cat /tmp/cmds |
while read cmd; do echo $cmd; eval $cmd; done
Это не работает.Я получаю «emacs: стандартный ввод не является tty», как если бы я пытался передать ввод в emacs -nw (например, как вы grep и направить его на less).
>> echo "ls /tmp" > /tmp/cmds; cat /tmp/cmds |
while read cmd; do echo $cmd; eval $cmd; done
Это работает, как и ожидалось, поэтому я не думаю, что есть проблема с кавычками / пробелами.Это оставляет дефис, но если я скажу "ls -alh", это тоже хорошо работает.
Так что случилось с командой emacs?
Спасибо.