Eu tenho um script de shell que tem permissão de execução do usuário no OS X, mas quando clico duas vezes nele, ele é aberto em um editor de texto. Como posso executá-lo clicando duas vezes nele?
233
Primeiro no terminal, torne o script executável, digitando:
chmod a+x (yourscriptname)
Em seguida, no Finder, clique com o botão direito do mouse no seu arquivo e selecione "Abrir com" e depois "Outros ...".
Aqui você seleciona o aplicativo no qual deseja executar o arquivo, nesse caso, seria Terminal. Para poder selecionar o terminal, você precisa mudar de "Aplicativos recomendados" para "Todos os aplicativos". (O aplicativo Terminal.app pode ser encontrado na pasta Utilitários)
OBSERVAÇÃO: a menos que você não queira associar todos os arquivos com esta extensão para rodar no terminal, você não deve ter "Always Open With" marcado.
.command
é , por padrão executável a partir do Finder, sem a necessidade de instruir Localizador de como abri-lo..command
extensão do arquivo.Você já tentou usar a
.command
extensão do nome do arquivo?fonte
chmod +x
), mas a.command
extensão já está vinculada ao Terminal. Grande solução, obrigadoDesde o OSX 10.10 (Yosemite) e desde pelo menos OS X 10.8 (Mountain Lion) , o comportamento é o seguinte quando você abre (clique duas vezes) scripts executáveis do Finder :
.command
:No entanto, através do Terminal,
Preferences... > Profiles
você pode optar por fechar automaticamente a janela quando o script sair.cd -- "$(dirname "$BASH_SOURCE")"
logo após a linha shebangcd -- "$(dirname "$0")"
,.chmod +x <script>
no Terminal; caso contrário, você verá os seguintes sintomas:.command
: O Finder exibe uma mensagem de erro enganosa que sugere que o problema pode ser corrigido viaFile > Get Info
, o que não é verdade - use ochmod +x
método sugerido acima.#!/bin/bash
): o comportamento é como se o sufixo fosse.sh
- veja abaixo..sh
, executáveis ou não:TextEdit.app
ou, se instalado, comXcode.app
..scpt
ou.applescript
(mesmo se eles próprios estiverem marcados como executáveis, o que normalmente não é o caso):[Apple]Script Editor
[1] Executável significa: um script com o (s) bit (s) de permissão executável (s) definido (s) e o usuário que está chamando - em relação à propriedade do arquivo - potencialmente sendo permitido executá-lo.
Se você
chmod a+x
definir todos os bits de permissão (o que é típico), qualquer pessoa poderá invocá-lo (supondo que eles também tenham permissão para ler o arquivo com base nos bits de permissão de leitura e na propriedade do arquivo).fonte
osascript
você pode incluir no.command
arquivo, em vez de mexer manualmente com o perfil.osascript -e '...'
comando ao final do script? Qual é o comando específico e garante que a guia direita seja fechada mesmo quando o script não estiver em execução na guia mais à frente?osascript -e 'tell application "Terminal" to close front window' > /dev/null 2>&1 &
... Pode não funcionar em todos os cenários, embora o redirecionamento no end é realmente a chave - o osascript pode ser adaptado facilmente (por exemplo, a janela pode precisar ser alterada para tab se esse for o seu comportamento padrão do terminal, etc.)..command
execução do arquivo de script, apesar da configuração do perfil?bash
script, adicioneread -p 'Press Return to close this window.'
como a última declaração.Como alternativa, você pode criar um aplicativo Mac OS X comum a partir do seu script usando Platypus
fonte
A maneira mais fácil é alterar a extensão para
.command
ou nenhuma extensão.Mas isso abrirá o Terminal e você terá que fechá-lo. Se você não quiser ver nenhuma saída, use o Automator para criar um aplicativo para Mac, clique duas vezes, adicione à estação, etc.
Automator
aplicaçãoRun
botão no canto superior direito para testá-lo.File > Save
para criar o aplicativo.fonte
Não há necessidade de usar aplicativos de terceiros, como o Platypus.
Basta criar um Apple Script com o Editor de scripts e usar o comando
do shell script "shell commands"
para chamadas de comando diretas ou arquivos de script de shell executável, manter o arquivo de script editável seguro em algum lugar e exportá-lo para criar um script de aplicativo. o script do aplicativo pode ser iniciado com um clique duplo ou a seleção na pasta da barra.fonte
Você também pode definir padrões por extensão de arquivo usando RCDefaultApp:
http://www.rubicode.com/Software/RCDefaultApp/
potencialmente você pode configurar .sh para abrir no iTerm / Terminal etc., precisaria de permissões de execução do usuário, por exemplo
fonte
chmod 774 filename
Nota : O arquivo com o nome 'filename' que possui o script bash não possui extensão
fonte