ความแตกต่างระหว่าง sh และ shell สำหรับ org-babel คืออะไร


12

ฉันกำลังทดลองกับการหาข้อมูลจากโหมดองค์กรลงในสคริปต์เชลล์ของฉันและฉันได้พบกับความประหลาด:

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

ความคิดใด ๆ ที่เกิดขึ้น?


1
ดูเหมือนว่า ob-sh จะเลิกใช้ในความโปรดปรานของ ob-shell (เท่าที่เห็นในหัวข้อนี้ของรายการส่งเมล)
dangom

หากพวกเขาเป็นเพียงนามแฝงซึ่งกันและกันแล้วทำไมความแตกต่างในพฤติกรรม?
stsquad

มีบางอย่างแปลก ๆ กับการกำหนดค่าของคุณ ฉันไม่เห็นความแตกต่างของพฤติกรรมที่นี่ ถ้าฉันสะท้อน $ SHELL ฉันจะได้เชลล์ที่เหมือนกันสำหรับทั้งคู่ นอกจากนี้คุณลองC-c C-v Iตรวจสอบว่า src-blocks ทั้งสองมีส่วนหัวเดียวกันหรือไม่
dangom

@dangom: hmm ชุดเดียวกันของส่วนหัว args บันทึกสำหรับ Lang: shell vs Lang: sh และ header-args: shell vs header-args: sh แต่ทั้งคู่ตั้งค่าเป็นศูนย์ $ SHELL รายงานทุบตีในทั้งสองกรณี
stsquad

คำตอบ:


8

ความแตกต่างคือสิ่งที่เชลล์ได้รับเรียกให้ประเมินบล็อกของคุณ shellเรียกสิ่งที่เปลือกเริ่มต้นของคุณคือในขณะที่shโทร/bin/shโดยเฉพาะ เชลล์เริ่มต้นของคุณอาจเป็นทุบตีซึ่งเป็นส่วนขยายของดวลจุดโทษ echo $0จะบอกคุณว่าเปลือกของคุณทำงานได้แบบใด:

#+BEGIN_SRC shell
echo $0
#+END_SRC

#+RESULTS:
: /bin/bash


#+BEGIN_SRC sh
echo $0
#+END_SRC

#+RESULTS:
: sh

เชลล์ใด ๆ ในorg-babel-shell-namesที่ติดตั้งบนระบบของคุณจะทำงานได้


ฉันยังสับสนว่าทำไมตัวแปรอินพุทจึงถูก munged มาก ทุบตีนี้ทำอะไรที่แตกต่างกับตัวแปรหรือไม่
stsquad
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.