2015-03-20 12 views
14

vedo riferimenti a, e gli esempi che utilizzanoCome posso caricare bash (al contrario di sh) in org babel per abilitare # + BEGIN_SRC bash?

#+BEGIN_SRC bash 

ma nella mia versione modalità org (ELPA, org 20.150.316) nel menu di customize-variable org-babel-load-languages, non v'è alcuna "bash" voce, un solo guscio. Il tentativo di valutare codice come

#+BEGIN_SRC bash 
ls -l 
#+END_SRC 

ottengo

org-babel-execute-src-block: la funzione No org-babel-esecuzione di bash!

Cosa mi manca?

Grazie.

+3

Solo un pensiero, ma potresti provare '# + begin_src sh: shebang" #!/Bin/bash "'? – fredtantini

+0

Questo funziona per l'esempio che ho dato, quindi dovrei accettarlo se fai il tuo commento in risposta. Sebbene il mio scopo originale fosse quello di usare parte della capacità di elaborare array associativi [discussi qui] (http://comments.gmane.org/gmane.emacs.orgmode/84282) che la soluzione ': shebang 'non fornisce. Penso che tutto ciò rimandi alla _ob-sh.el_, parte dell'org su melpa, non ha alcune patch che mi aspettavo. – mzimmermann

+1

Il problema è che sia melpa che elpa hanno una versione precedente di _ob-sh.el_ che non ha le modifiche bash. La versione su [org git] (git: //orgmode.org/org-mode.git) ha una versione _ob-shell.el_ con bash abilitata. Richiedere/caricare questa versione nel mio init.el, qualcosa come '(file di caricamento" ~/org-git/org-mode/lisp/ob-shell.el ")' consente '# + BEGIN_SRC bash' e consente anche all'organizzazione elaborazione di babel di array associativi. – mzimmermann

risposta

4

Vedere il valore di org-babel-sh-command (che per impostazione predefinita è "sh") e utilizzare solo "sh" come lingua.

+0

Ho già impostato 'bash' nel mio _init.el_. Penso che il problema sia che l'ob-sh.el, parte dell'org su melpa (sto usando melpa, non elpa come ho detto) non ha menzione di 'bash'. Forse questo significa che non ha alcune patch, ho bisogno di esaminarlo ulteriormente e magari ottenere una versione successiva ... – mzimmermann

+1

Dopo aver fatto il tifo, sembra che la Var sopra sia scomparsa da Git Org. Sembra che sia stato sostituito da "org-babel-shell-names". Forse mettendo "bash" come il primo componente di esso? ... se esiste nella tua versione Org? – fniessen

+0

Quale versione di org-babel stai usando? Il problema è anche la versione più recente su Melpa o Elpa non ha nemmeno "org-babel-shell-names" o altre elaborazioni bash. Non sono sicuro se si tratta di licenze o omissioni. Ora sto usando _ob-shell.el_ da org Git repo piuttosto che _ob-sh.el_ spedito su Elpa/Melpa e che fornisce tutto ciò di cui ho bisogno. Ancora interessante il motivo per cui Elpa/Melpa sta spedendo una versione precedente. – mzimmermann

1

Sembra che bash sia coperto dall'identificatore shell.

Pertanto, è necessario attivare l'inserimento "Shell Script" in customize-variable org-babel-load-languages.

Versione testata: 20150810 di MELPA.

6

Per quanto mi riguarda, ho fatto

(require 'package) 
(add-to-list 'package-archives '("org" . "http://orgmode.org/elpa/") t) 

come mostrato http://orgmode.org/elpa.html per assicurarsi che ho avuto l'ultima versione Org (navi vaniglia Emacs con la propria versione di Org). Quindi ho installato il pacchetto org in modo interattivo dopo aver eseguito M-x list-packages. Quindi potrei fare

(org-babel-do-load-languages 'org-babel-load-languages 
    '(
     (shell . t) 
    ) 
) 

che consente #+BEGIN_SRC bash.