É possível executar bash builtin a partir de um script não bash?

1

É possível executar, por exemplo, history -w para o shell bash subjacente a partir do script ruby?
Ou melhor, é possível executar o comando builtin para bash shell sabendo apenas o seu pid?

A única maneira que eu encontrei é capturar o sinal como trap "history -w" SIGUSR1 e então enviar sinal para o processo, mas não tenho certeza se é uma boa prática e USR1 não é usado pelo bash, também desta forma eu posso executar no máximo 2 comandos (USR1 e USR2). E eu tenho que definir o trap antes de usá-lo.

Estou no Mac, por isso não há SIGRTMIN..SIGRTMAX.

Por que preciso disso:

Eu criei o script de shell ruby dt , que abre uma nova guia ao lado da atual com o mesmo diretório de trabalho, então eu escrevi newTabHere.app que pode fazer a mesma coisa, mas pode fazer isso mesmo se a guia estiver ocupada executando algo (chamo-a usando Spark ). Mas será muito melhor se o histórico também for o mesmo na guia duplicada e, para dt , posso usar apenas alias dt='history -w; dt' , mas como posso fazer isso a partir de newTabHere.app ?

    
por tig 22.12.2010 / 09:44

1 resposta

1

Não há uma maneira off-the-shelf de fazer com que um shell execute um comando, além de digitar em sua entrada padrão. A coisa mais fácil seria fazer com que o bash verifique algum arquivo ou execute history -w , como parte de PROMPT_COMMAND (um comando executado antes de cada prompt).

Acho que o que você está procurando é, na verdade, Tempo real exportação de histórico entre as janelas de terminal do Bash e, talvez, Better bash history .

Você também pode considerar o uso de zsh (disponível na maioria dos repositórios de pacotes unix do Linux / OSX /) e seus inc_append_history e share_history opções .

    
por 22.12.2010 / 23:24

Tags