/ bin / sh: rm: comando não encontrado -- applescript campo com bash campo com error campo com command-line camp apple Relacionado O problema

/bin/sh: rm: command not found


2
vote

problema

português

Eu tenho problemas com alguns aplicativos que usam o recurso ABCDEFGHIJKLMNABCDEFGHIJKLMN2 . Por exemplo, os scripts de desinstalação do Growl mostra um erro:

  error "/bin/sh: rm: command not found" number 127    

A fonte do script é

  display dialog (localized string "title") if button returned of result = "OK" then     try         quit application id "com.Growl.GrowlHelperApp"     end try     try         quit application id "com.Growl.MenuExtra"     end try     do shell script "rm -rf /Library/PreferencePanes/Growl.prefPane ~/Library/PreferencePanes/Growl.prefPane" with administrator privileges     display dialog (localized string "succeeded") buttons {localized string "OK"} default button 1 end if    

Adicionei echo $PATH > /omg.txt && para o comando para ver qual é o caminho de pesquisa para rm. Mas tem um valor estranho:

  $ cat /omg.txt  â    

O que posso fazer? Eu não entendo o que está acontecendo. Quando acabo de executar sudo /bin/sh no terminal, o ambiente é bom!

Agora, eu sei que para desinstalar o Growl eu posso apenas executar o comando que ele tenta correr no terminal. Mas não vai resolver esse problema, basta adiar até que outro aplicativo falhe com o mesmo erro (aconteceu antes).

english

I have problems with some applications that use AppleScript shell script feature. For example, Growl's uninstall scripts shows an error:

error "/bin/sh: rm: command not found" number 127 

The source of the script is

display dialog (localized string "title") if button returned of result = "OK" then     try         quit application id "com.Growl.GrowlHelperApp"     end try     try         quit application id "com.Growl.MenuExtra"     end try     do shell script "rm -rf /Library/PreferencePanes/Growl.prefPane ~/Library/PreferencePanes/Growl.prefPane" with administrator privileges     display dialog (localized string "succeeded") buttons {localized string "OK"} default button 1 end if 

I've added echo $PATH > /omg.txt && to the command to see what's the search path for rm. But it has a weird value:

$ cat /omg.txt  xc3xa2 

What can I do? I don't understand what's going on. When I just run sudo /bin/sh in Terminal, the environment is just fine!

Now, I know that to uninstall Growl I can just run the command it tries to run in the Terminal. But it won't solve this problem, just postpone it until another application fails with the same error (it happened before).

           

Lista de respostas

5
 
vote

De acordo com Documentação oficial da Apple , é por design que os scripts de shell invocados A partir do AppleScript ABCDEFGHIJKLMNABCDEFGHIJKLMN0 Ação, Não Herdar o ABCDEFGHIJKLMNABCDEFGHIJKLMN1 Variável no ambiente do seu login.

Contavelmente, a Apple instrui os usuários a usar caminhos completos para comandos ao invocar scripts do shell do AppleScript, em vez de confiar na variável $ Caminho no ambiente.

No script no seu exemplo, você pode substituir rm com /bin/rm

De acordo com a documentação acima do Aforelink, este é o comportamento documentado pretendido; Um script que espera que o ABCDEFGHIJKLMNABCDEFGHIJKLMN4 seja definido para ABCDEFGHIJKLMNABCDEFGHIJKLMN5 Comandos é um script com um bug.

Dito isto, se você for absolutamente usar caminhos relativos e usar $ caminho para completá-los, você pode prefixar qualquer script shell chamado por do shell script com o comando abcdefghijklmn7 < / p >.

 

According to Apple's official documentation, it is by design that shell scripts invoked from AppleScript's do shell script action do not inherit the $PATH variable from your login shell's environment.

Accordingly, Apple instructs users to use full paths to commands when invoking shell scripts from AppleScript rather than relying on the $PATH variable in the environment.

In the script in your example, you could replace rm with /bin/rm

According to the aforelinked documentation, this is the intended, documented behavior; a script that expects the environment's $PATH to be set for do shell script commands is a script with a bug.

That said, if you absolutely need to use relative paths and use $PATH to complete them, you could prefix any shell script called by do shell script with the command PATH=/usr/bin:/bin:/usr/sbin:/sbin:/usr/local/bin:/usr/X11/bin;

 
 
   
   
1
 
vote

hotfix = dar a localização de rm comando:

  do shell script "/bin/rm -rf /Library/PreferencePanes/Growl.prefPane ~/Library/PreferencePanes/Growl.prefPane" with administrator privileges    
 

hotfix = give the location of rm command:

do shell script "/bin/rm -rf /Library/PreferencePanes/Growl.prefPane ~/Library/PreferencePanes/Growl.prefPane" with administrator privileges 
 
 
 
 
1
 
vote

Você poderia realmente usar a sugestão de Daniel de exportar caminhos, mas salvá-lo como um script para si (chame-o de "dss" para fazer script shell ou algo assim) e colocá-lo em USR / local / bin USR / LOCK >. Dessa forma, na próxima vez que você precisar executar um script OSA como a desinstalação Growl, você pode ligar para o seu script a partir da linha de comando para definir $ caminho, execute o trabalho OSA , e depois terminar. Não é uma solução permanente, mas altamente viável.

 

You could actually use Daniel's suggestion of exporting paths, but save it as a script unto itself (call it "dss" for do shell script, or something) and place it in usr/local/bin. That way the next time you need to run an osa script like the Growl uninstall, you can call your script from the command line to set $PATH, run the osa job, and then be finished. Not a permanent solution, but highly workable.

 
 
   
   

Perguntas relacionadas

18  Como atualizar o aplicativo App Store a partir da linha de comando?  ( How to update app store application from command line ) 
Eu gostaria de forçar uma atualização de aplicativos de aplicativos da linha de comando. Como posso fazer isso? ...

4  Obtenha o tempo de CPU do usuário e do sistema de processo no OSX via linha de comando?  ( Get per process user and system cpu time on osx via command line ) 
Estou familiarizado com ABCDEFGHIJKLMNABCDEFGHIJKLMN0 Comando que fornece Usuário e System CPU separados por processo no Linux: $ sudo pidstat -p 3162 Li...

26  Como posso inspecionar as variáveis ​​de ambiente de um processo de execução?  ( How can i inspect the environment variables of a running process ) 
Existe algum equivalente (CLI ou GUI) para o recurso ABCDefGHIJKLMNABCDefGHIJKLMN0 ...

1  Como executar o script do shell no lançamento do aplicativo?  ( How to run shell script upon application launch ) 
Não tenho certeza se isso pertence aqui ou no superusuário, mas é o Mac específico, então eu vou com aqui. Eu escrevi um script Ruby que edita o arquivo de ...

4  Fazer Localizador.Updatedb Run Diariamente no Snow Leopard sem Hacking / System / Library?  ( Make locator updatedb run daily on snow leopard w o hacking system library ) 
No banco de dados ABCDEFGHIJKLMNABCDEFGHIJKLMBCDefGHIJKLMN1 é atualizado uma vez por semana por um trabalho de lançamento, /System/Library/LaunchDaemons/co...

0  Como esse script AWK funciona?  ( How does this awk script work ) 
Eu tenho 2 arquivos de dados contendo uma coluna. Eu quero fazer outro arquivo de dados mesclando as duas colunas. Eu tenho a linha de comando na concha, mas ...

6  Os comandos de linha de comando podem ser insensíveis à ordem de nomes e opções de arquivos?  ( Can command line commands be made insensitive to order of filenames and options ) 
Eu sou novo para o uso do MAC. Parece que a maioria dos comandos tropega as opções dadas após os nomes dos arquivos. No Linux, que eu usei há anos, não import...

1  Problema com sintaxe de exclusão de conta script  ( Problem with scripted account deletion syntax ) 
Estou trabalhando em um módulo de script de limpeza de contas que pode lidar com as contas ocultos e unilindas que estamos criando em massa em novos sistemas ...

1  Sintaxe de comando do terminal enrolado do AppleScript  ( Curl terminal command syntax from applescript ) 
Eu quero executar um comando curl no AppleScript que faz o seguinte ( por esta pergunta / resposta ): https://superuser.com/a/1054803/471181. . ... faze...

1  Como corrigir localize.updatedb não respeitando o diretório excluído de /etc/locate.rc?  ( How to fix locate updatedb not respecting directory excluded from etc locate rc ) 
Eu queria excluir alguns diretórios a partir dos resultados de ABCDEFGHIJKLMNABCDEFGHIJKLMN0 Ao editar ABCDEFGHIJKLMNABCDEFGHIJKLMN1 . Infelizmente se eu e...




© 2022 pergunte.org All Rights Reserved. Casa de perguntas e respostas todos os direitos reservados


Licensed under cc by-sa 3.0 with attribution required.