Come posso aggiungere shell alla lista in Run Shell Script in Automator?

1

Se seleziono l'azione Esegui script shell in Automator, ha un menu a discesa pieno di possibili shell:

/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  

Penso che alcuni di quella lista provenissero da /etc/shells , specialmente visto che ha virato sul mio zsh personalizzato alla fine (a meno che non legga la shell attualmente selezionata da qualche altra parte). I anche hanno un Ruby aggiornato in /opt/rubies/ruby-2.1.2/ che mi piacerebbe utilizzare per questa azione di script della shell.

Qualcuno saprebbe come posso aggiungerlo alla lista? Ho provato ad aggiungerlo a /etc/shells che non ha funzionato (e sembra un orribile hack). Facendo così rimosso anche lo zsh personalizzato dalla lista!

Inoltre, quando prendo l'azione per la prima volta la mia shell corrente (la zsh personalizzata) viene selezionata automaticamente. Se tento di utilizzare il menu a discesa e di selezionare nuovamente lo zsh personalizzato, seleziona /bin/bash e rimuove lo zsh personalizzato dall'elenco. Se, tuttavia, lascio la selezione personalizzata di zsh e salvo il flusso di lavoro e riavvia il programma di automazione, manca lo zsh personalizzato e non è stata selezionata alcuna shell per l'azione.

I potrebbe utilizzare una delle shell esistenti per chiamare il Ruby personalizzato, ma ovviamente sarebbe più facile rimuovere un livello di reindirizzamento

Qualsiasi aiuto con questo sarà molto apprezzato.

    
posta Iain 22.09.2014 - 18:54
fonte

1 risposta

1

L'elenco di queste shell in questa azione proviene da questo file PLIST - > " / System / Library / Automator / Esegui Shell Script.action / Contents / Resources / Shells.plist "

Modifica questo file per aggiungere altre shell ( hai bisogno della password dell'amministratore )

    <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>
    
risposta data 24.09.2014 - 19:47
fonte

Leggi altre domande sui tag