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?


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.


Saya masih bingung mengapa variabel input jadi hijau. Apakah bash ini melakukan sesuatu yang berbeda dengan variabel?
— stsquad
Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.