Apa perbedaan antara sh dan shell untuk org-babel?

12

Saya sedang bereksperimen dengan sumber data dari org-mode ke skrip shell saya dan saya telah menemukan keanehan:

#+tblname: simple-table
| 1 |
| 2 |
| 3 |
| 4 |
| 5 |

#+name: work-with-simple-list-shell
#+begin_src shell :var tbl=simple-table
echo "$tbl"
#+end_src

#+RESULTS: work-with-simple-list-shell
: 1

#+name: work-with-simple-list-sh
#+begin_src sh :var tbl=simple-table
echo "$tbl"
#+end_src

#+RESULTS: work-with-simple-list-sh
| 1 |
| 2 |
| 3 |
| 4 |
| 5 |

Adakah yang tahu apa yang sedang terjadi?

stsquad
sumber
1
Sepertinya ob-sh tidak digunakan lagi karena ob-shell (Seperti yang terlihat di utas milis ini).
dangom
Jika mereka hanya saling alias maka mengapa ada perbedaan perilaku?
stsquad
Sesuatu yang aneh dengan konfigurasi Anda. Saya tidak melihat perbedaan perilaku di sini. Jika saya menggemakan $ SHELL, saya mendapatkan shell yang sama untuk keduanya. Juga, apakah Anda mencoba C-c C-v Imemeriksa apakah kedua src-blok memiliki header-args yang sama?
dangom
@ Dangom: hmm set yang sama dari header args simpan untuk Lang: shell vs Lang: sh dan header-args: shell vs header-args: sh tetapi keduanya diatur ke nol. $ SHELL melaporkan bash dalam kedua kasus.
stsquad

Jawaban:

8

Perbedaannya adalah shell mana yang dipanggil untuk mengevaluasi blok Anda. shellpanggilan apa pun shell default Anda saat shpanggilan /bin/shkhusus. Shell default Anda mungkin adalah bash, yang merupakan perpanjangan dari sh. echo $0akan memberi tahu Anda apa yang dapat dieksekusi shell Anda berjalan:

#+BEGIN_SRC shell
echo $0
#+END_SRC

#+RESULTS:
: /bin/bash


#+BEGIN_SRC sh
echo $0
#+END_SRC

#+RESULTS:
: sh

Cangkang org-babel-shell-namesyang terpasang pada sistem Anda akan berfungsi.

erikstokes
sumber
Saya masih bingung mengapa variabel input jadi hijau. Apakah bash ini melakukan sesuatu yang berbeda dengan variabel?
stsquad