¿Cómo puedo agregar shells a la lista en Ejecutar Shell Script en el Automator?

1

Si selecciono la acción Ejecutar shell script en Automator, tiene un menú desplegable lleno de posibles shells:

/bin/bash  
/bin/csh  
/bin/ksh  
/bin/sh  
/bin/tcsh  
/bin/zsh  
/usr/bin/perl  
/usr/bin/python  
/usr/bin/ruby  
/Users/iain/Library/Frameworks/zsh/Programs/zsh  

Reconozco que parte de esa lista provino de /etc/shells , especialmente porque se incluyó en mi zsh personalizado al final (a menos que se lea el shell seleccionado actualmente en otro lugar). También tengo un Ruby actualizado en /opt/rubies/ruby-2.1.2/ que me gustaría usar para esta acción de script de shell.

¿Alguien sabría cómo puedo agregarlo a la lista? He intentado agregarlo a /etc/shells que no funcionó (y parece un hack horrible). ¡Al hacerlo también se eliminó el zsh personalizado de la lista!

Además, cuando accedo por primera vez a la acción, mi shell actual (la zsh personalizada) se seleccionará automáticamente. Si trato de usar el menú desplegable y volver a seleccionar el zsh personalizado, selecciona /bin/bash en su lugar y elimina el zsh personalizado de la lista. Sin embargo, si dejo la selección de zsh personalizada y guardo el flujo de trabajo y reinicio el automatizador, falta la zsh personalizada y no hay un shell seleccionado para la acción.

I podría usar uno de los shells existentes para llamar al Ruby personalizado, pero obviamente sería más fácil eliminar una capa de redirección

Cualquier ayuda con esto será muy apreciada.

    
pregunta Iain 22.09.2014 - 18:54

1 respuesta

1

La lista de estos shells en esta acción proviene de este archivo PLIST - > " / System / Library / Automator / Run Shell Script.action / Contents / Resources / Shells.plist "

Edite este archivo para agregar shells de otros ( necesita la contraseña del administrador )

    <key>/Users/iain/Library/Frameworks/zsh/Programs/zsh</key>
<dict>
    <key>args</key>
    <array>
        <string>-c</string>
        <string>%</string>
        <string>-</string>
    </array>
    <key>script</key>
    <array>
        <string>cat</string>
        <string>for f in "$@"&#10;do&#10;&#09;echo "$f"&#10;done</string>
    </array>
</dict>
<key>/opt/rubies/ruby-2.1.2/</key>
<dict>
    <key>args</key>
    <array>
        <string>-e</string>
        <string>%</string>
        <string>--</string>
    </array>
    <key>script</key>
    <array>
        <string>ARGF.each do |f|&#10;&#09;puts f&#10;end</string>
        <string>ARGV.each do |f|&#10;&#09;puts f&#10;end</string>
    </array>
</dict>
    
respondido por el jackjr300 24.09.2014 - 19:47

Lea otras preguntas en las etiquetas