Não é possível criar um arquivo executável somente com um operador de redirecionamento de shell. Não há maneira portátil, e também não há maneira de bash (no código-fonte, você pode ver que o redirecionamento chama do_redirection_internal
que chamadas redir_open
com o parâmetro mode
definido para 0666, e este, por sua vez, chama open
com este modo).
Você está chamando um comando shell, então adicione ; chmod +x …
em algum lugar. Não há absolutamente nada de errado com isso. Mais uma linha de código não é um problema. Você precisa fazer três coisas (criar um arquivo com algum conteúdo, tornar o arquivo executável, executá-lo), então escreva três linhas.
Existe um comando shell relativamente obscuro que pode criar um arquivo executável com algum conteúdo especificado: uudecode
. Mas eu não recomendaria usá-lo: ele requer que a entrada seja passada em um formato não legível, ela ignora a umask do usuário e é obscura.
Uma alternativa sã é chamar bash /the/script
em vez de chmod +x /the/script && chmod +x
, se você souber com que interpretador executar o arquivo.