Sh ve shell for org-babel arasındaki fark nedir?


12

Kuruluş modundan kabuk komut dosyalarıma veri aktarımı yapıyorum ve bir gariplikle karşılaşıyorum:

#+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 |

Neler olup bittiği hakkında bir fikrin var mı?


1
Ob-sh, ob-shell lehine onaylanmamış gibi görünüyor ( Posta listesinin bu iş parçacığında görüldüğü gibi ).
dangom

Eğer sadece birbirlerinin takma adı ise, neden davranış farkı?
stsquad

Yapılandırmanızda garip bir şey var. Burada herhangi bir davranış farkı görmüyorum. $ SHELL'i yankılarsam, her ikisi için de aynı kabuğu alıyorum. Ayrıca, C-c C-v Iher iki src bloğunun da aynı başlık-argümanlarına sahip olup olmadığını kontrol etmeye çalıştınız mı?
dangom

@dangom: hmm Lang: shell'e Lang: sh ve header-args: shell'e header-args: sh için aynı başlık argümanları kümesi kaydedildi, ancak her ikisi de sıfır olarak ayarlandı. $ SHELL her iki durumda da bash bildiriyor.
stsquad

Yanıtlar:


8

Fark, bloğunuzu değerlendirmek için hangi kabuğun çağrıldığıdır. özel olarak çağrı shellyaparken varsayılan kabuğunuz ne olursa olsun shçağırır /bin/sh. Varsayılan kabuğunuz muhtemelen bash şeklindedir, bu da sh'nin bir uzantısıdır. echo $0size kabuğunuzun hangi yürütülebilir dosyayı çalıştırdığını söyleyecektir:

#+BEGIN_SRC shell
echo $0
#+END_SRC

#+RESULTS:
: /bin/bash


#+BEGIN_SRC sh
echo $0
#+END_SRC

#+RESULTS:
: sh

org-babel-shell-namesSisteminizde kurulu olan kabuklardan herhangi biri çalışacaktır.


Giriş değişkeninin neden bu kadar munged olduğuna hala kafam karıştı. Bu bash değişkenle farklı bir şey yapıyor mu?
stsquad
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.