1

Можно ли запустить, например, history -w для основной оболочки bash из сценария ruby?
Или лучше запустить встроенную команду для оболочки bash, зная только ее pid?

Единственный способ, который я нашел, - перехватить сигнал типа trap "history -w" SIGUSR1 и затем отправить сигнал на обработку, но я не уверен, что это хорошая практика, и USR1 не используется bash, также таким образом я могу выполнить max 2 команды (USR1 и USR2). И я должен определить ловушку перед ее использованием.

Я на Mac, так что нет SIGRTMIN ..SIGRTMAX.

Зачем мне это нужно:

Я создал сценарий оболочки ruby dt который открывает новую вкладку рядом с текущей с тем же рабочим каталогом , затем я написал newTabHere.app, который может делать то же самое, но может делать это, даже если вкладка занята чем-то (я называю это с помощью Spark). Но было бы намного лучше, если бы история была такой же в дублированной вкладке, и для dt я могу просто использовать alias dt='history -w; dt' , но как я могу сделать это из newTabHere.app?

1 ответ1

1

Там нет никакого готового способа заставить оболочку выполнить команду, кроме ввода на ее стандартном вводе. Проще всего было бы, чтобы bash проверил какой-либо файл или запустил history -w как часть PROMPT_COMMAND (команда, которая выполняется перед каждым приглашением).

Я думаю, что вы на самом деле ищете экспорт истории в реальном времени из окон терминала Bash и, возможно, лучше историю Bash.

Вы могли бы также рассмотреть возможность использования ЗША (доступно в большинстве репозиториев Linux/OSX/ другие Unix) и его inc_append_history и share_history варианты.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .