Tenho um Makefile que roda uma ferramenta que demora um pouco; isso me permite substituir o comando usado:
make TOOL=alternative-tool
Eu gostaria de pular essa etapa no Makefile, então estou procurando um comando que saia com o status 0 e que tenha efeitos colaterais insignificantes.
Obviamente, eu poderia usar apenas true
, mas isso é meio confuso:
make TOOL=true
Parece que eu quero executar a ferramenta, mas não quero.
Existe um executável instalado por padrão que não /bin/true
saia com o status 0 e que tenha um nome cativante e fácil de digitar?
Mesmo que você tenha solicitado algo que é "não
/bin/true
", substituirtrue
pelo nome completo/bin/true
para mostrar que é otrue
programa em vez de algum outro significado de "verdadeiro" é provavelmente a melhor solução.Sua preocupação é que o
true
inparece ser algo diferente de um nome de comando. Mas se você escrever
então isso é inequivocamente um comando. Alguém pode interpretar mal
TOOL=true
para significar que alguma outra ferramenta em algum lugar é pretendida, mas nenhuma leitura incorreta deTOOL=/bin/true
é provável.Não tenho certeza de quando o
:
, que é um shell integrado, mas não um comando externo, funcionará. Henning Makholm relatou que parece funcionar . Mas acho que não funciona em todas as situações e você descobriu que não funcionou para você .Quanto a um alias de shell, você não pode usá-lo porque a expansão de alias não é executada nos argumentos que você passa para um comando, nem os makefiles fazem uso de aliases de shell definidos anteriormente. Mesmo que
make
execute seus comandos em um novo shell, esse shell não terá o alias (e não o usaria mesmo que o tivesse, porque seria um shell não interativo, onde a expansão do alias não é habilitada automaticamente).Embora eu concorde que usar o caminho completo para
true
seria a melhor solução, gostaria de observar o que provavelmente é de longe a maneira mais comum de evitar a execução real do comando: colocar umecho
na frente dele. Então:Você sempre pode criar seu próprio comando que não faz nada além de retornar um status de saída zero. Algumas opções:
um link simbólico com o nome apropriado para
/bin/true
um script shell vazio
um programa C quase vazio:
Crie um link simbólico no diretório de trabalho para /bin/true chamado algo como
skip
. Desta forma...Então a linha make pode ser...
Aqui está uma maneira de fazer isso com um pouco mais de caracteres:
Depois de fazer isso, você pode executá-lo novamente apenas usando o nome
T
.