Caminho correto automático ao executar um comando do histórico?

2

Eu faço uma pesquisa recursiva para encontrar um comando que executei alguns dias atrás e quero executá-lo. No entanto, esse comando deve ser executado a partir do caminho de onde eu o executei anteriormente e não onde estou atualmente.

É possível que zsh descubra isso e mude o comando para o caminho completo e execute a partir do meu caminho atual? ou talvez bifurcar um comutador de processo para o caminho original executá-lo e voltar?

    
por Vaibhav Bajpai 01.12.2011 / 11:49

2 respostas

2

O diretório original onde o comando foi executado não é gravado no histórico.

Você pode definir um gancho para ser executado quando o nome do comando que você tenta executar não for encontrado: command_not_found_handler . Mas, a menos que você tenha uma boa ideia de qual trabalho anterior deve ter sido naquele momento, isso não vai levar você para longe.

Leitura relacionada: história do zsh - caminho completo ; Posso fazer com que meu histórico de shell registre como os curingas foram expandidos?

    
por 02.12.2011 / 02:24
0

Na maioria dos casos, isso seria realmente uma ação indesejável. Muitas vezes, quando eu reexecuto o comando é especificamente para executá-los no meu contexto atual. Executar um comando de histórico e fazer com que ele atue em algo diferente da pasta atual pode até ter efeitos colaterais inesperados e indesejados.

Eu sugeriria seguir uma abordagem diferente. Primeiro, identifique qual comando precisa ser especificamente estanho de um determinado local, depois se pergunte por que eles são assim e corrija-os usando padrões padronizados.

  • Se eles precisarem carregar bibliotecas de recursos que estão em caminhos relativos ao executável, corrija-os para que eles saibam onde encontrá-los usando coisas como dirname e $0 .

  • Se precisarem de dados, considere passar-lhes argumentos que mostrem onde encontrar os dados que não são relativos, para que possam ser reutilizados.

  • Se a origem do problema não puder ser corrigida por você, considere escrever pequenas funções de shell ou scripts de wrapper que configuram o ambiente para o executável, independentemente de quaisquer fatores que variam em seu sistema.

por 31.03.2012 / 12:17