2015-03-20 24 views
14

tôi thấy tham chiếu đến, và ví dụ sử dụngLàm cách nào để tải bash (trái ngược với sh) trong org babel để bật # + BEGIN_SRC bash?

#+BEGIN_SRC bash 

Nhưng trong phiên bản chế độ org tôi (ELPA, org 20.150.316) trong menu của customize-variable org-babel-load-languages, không có "bash" mục, chỉ có vỏ. Cố gắng để đánh giá mã như

#+BEGIN_SRC bash 
ls -l 
#+END_SRC 

tôi nhận được

org-babel-thi-src-block: chức năng Không org-babel-thực hiện cho bash!

Tôi đang thiếu gì?

Cảm ơn.

+3

Chỉ là một ý nghĩ, nhưng bạn có thể thử '# + begin_src sh: shebang" #!/Bin/bash "'? – fredtantini

+0

Điều này làm việc cho ví dụ tôi đã đưa ra, vì vậy tôi nên chấp nhận nó nếu bạn đưa ra nhận xét của bạn thành câu trả lời. Mặc dù mục đích ban đầu của tôi là sử dụng một số khả năng xử lý các mảng kết hợp [được thảo luận tại đây] (http://comments.gmane.org/gmane.emacs.orgmode/84282) mà giải pháp ': shebang 'không cung cấp. Tôi nghĩ rằng tất cả điều này trỏ đến _ob-sh.el_, một phần của org trên melpa, không có một số bản vá mà tôi mong đợi. – mzimmermann

+1

Vấn đề là cả melpa và elpa đều có phiên bản cũ của _ob-sh.el_ không có thay đổi bash. Phiên bản trên [org git] (git: //orgmode.org/org-mode.git) có phiên bản _ob-shell.el_ với bash được bật. Yêu cầu/tải phiên bản này trong init.el của tôi, một cái gì đó như '(load-file" ~/org-git/org-mode/lisp/ob-shell.el ")' cho phép '# + BEGIN_SRC bash' và cũng cho phép tổ chức babel xử lý mảng kết hợp. – mzimmermann

Trả lời

4

Xem giá trị org-babel-sh-command (mặc định là "sh") và chỉ sử dụng "sh" làm ngôn ngữ.

+0

Tôi đã đặt thành 'bash' trong _init.el_ của mình. Tôi nghĩ rằng vấn đề là ob-sh.el, một phần của org trên melpa (tôi đang sử dụng melpa, không phải elpa như tôi đã nói) không có đề cập đến 'bash'. Có lẽ điều đó có nghĩa là nó không có một số bản vá lỗi, tôi cần phải nhìn vào nó hơn nữa và có thể nhận được một phiên bản sau ... – mzimmermann

+1

Sau khi cheking, có vẻ như trên var biến mất khỏi Git Org. Nó dường như đã được thay thế bằng 'org-babel-shell-names'. Có thể đặt "bash" là thành phần đầu tiên của nó? ... nếu nó tồn tại trong phiên bản Org của bạn? – fniessen

+0

Bạn đang sử dụng phiên bản org-babel nào? Vấn đề là ngay cả phiên bản mới nhất trên Melpa hoặc Elpa thậm chí không có 'org-babel-shell-names' hoặc bất kỳ xử lý bash nào khác. Không chắc chắn nếu nó là cấp phép hoặc thiếu sót. Tôi hiện đang sử dụng _ob-shell.el_ từ tổ chức Git repo thay vì đó _ob-sh.el_ được vận chuyển trên Elpa/Melpa và cung cấp tất cả những gì tôi cần. Vẫn thú vị lý do tại sao Elpa/Melpa đang vận chuyển một phiên bản cũ hơn. – mzimmermann

1

Có vẻ như bash được bao phủ bởi số nhận dạng shell.

Vì vậy, bạn phải kích hoạt chèn "Shell Script" trong customize-variable org-babel-load-languages.

Phiên bản thử nghiệm: 20150810 từ MELPA.

6

Đối với tôi, tôi đã làm

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

như hiển thị trên http://orgmode.org/elpa.html để chắc chắn rằng tôi đã có phiên bản mới nhất Org (tàu vani Emacs với phiên bản riêng của mình Org). Sau đó, tôi đã cài đặt gói org tương tác sau khi thực hiện M-x list-packages. Sau đó, tôi có thể làm

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

cho phép #+BEGIN_SRC bash.

Các vấn đề liên quan