2 votos

/ bin/sh: rm: comando no encontrado

Tengo problemas con algunas aplicaciones que utilizar AppleScript shell script característica. Por ejemplo, el Gruñido de desinstalación secuencias de comandos muestra el error:

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

El origen de la secuencia de comandos es

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

He añadido echo $PATH > /omg.txt && para el comando para ver cuál es la ruta de acceso de búsqueda para rm. Pero tiene un extraño valor:

$ cat /omg.txt 
â

¿Qué puedo hacer? No entiendo lo que está pasando. Cuando acabo de ejecutar sudo /bin/sh en la Terminal, el ambiente está muy bien!

Ahora, yo sé que desinstalar Gruñido me puede simplemente ejecutar el comando se intenta ejecutar en el Terminal. Pero no va a resolver este problema, simplemente posponer la cirugía hasta que otro error de aplicación con el mismo error (esto ya ha pasado antes).

5voto

TraFoO Puntos 11

De acuerdo a Apple de la documentación oficial, por diseño, los scripts de shell que se invocan desde AppleScript s do shell script acción no heredarán el $PATH variable a partir de su shell de inicio de sesión del entorno.

En consecuencia, Apple se instruye a los usuarios a utilizar rutas completas a los comandos cuando la invocación de shell scripts de AppleScript en lugar de confiar en la variable $PATH en el medio ambiente.

En la secuencia de comandos en su ejemplo, usted podría reemplazar rm con /bin/rm

De acuerdo a la aforelinked documentación, esta es la intención, comportamiento documentado; una secuencia de comandos que se espera que el entorno de la $PATH que se deben establecer para do shell script comandos es una secuencia de comandos con un error.

Dicho esto, si es absolutamente necesario utilizar rutas relativas y uso $RUTA de acceso completa, usted podría prefijo de cualquier secuencia de comandos de shell llamado por do shell script con el comando PATH=/usr/bin:/bin:/usr/sbin:/sbin:/usr/local/bin:/usr/X11/bin;

1voto

Italoargentino Puntos 26

revisión = dar la ubicación de rm comando:

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

1voto

soxman Puntos 1569

Realmente podría utilizar la sugerencia de Daniel de exportar trazados, pero guardar un guión sí mismo (lo llaman "dss" para hacer script de shell, o algo) en usr/local/bin. Que manera la próxima vez que necesite ejecutar un script de osa como la desinstalación de Growl, puede llamar a la secuencia de comandos desde la línea de comandos para configurar $PATH, ejecutar el trabajo de osa y luego se terminó. No es una solución permanente, pero altamente trabajable.

AppleAyuda.com

AppleAyuda es una comunidad de usuarios de los productos de Apple en la que puedes resolver tus problemas y dudas.
Puedes consultar las preguntas de otros usuarios, hacer tus propias preguntas o resolver las de los demás.

Powered by:

X