Org-babel के लिए श और शेल में क्या अंतर है?


12

मैं अपने शेल स्क्रिप्ट में org- मोड से सोर्सिंग डेटा के साथ प्रयोग कर रहा हूं और मैं एक अजीबता से भाग रहा हूं:

#+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
ऐसा लगता है कि ओब-श को ओब-शेल के पक्ष में चित्रित किया गया है (जैसा कि मेलिंग सूची के इस धागे में देखा गया है )।
खतरा

यदि वे केवल एक दूसरे के लिए उपनाम हैं तो व्यवहार में अंतर क्यों?
stsquad

आपके कॉन्फिग के साथ कुछ अजीब है। मैं यहाँ व्यवहार में कोई अंतर नहीं देखता। यदि मैं $ शेल को प्रतिध्वनित करता हूं, तो मुझे दोनों के लिए समान शेल मिलता है। इसके अलावा, क्या आपने C-c C-v Iयह जांचने की कोशिश की है कि दोनों src- ब्लॉक में एक ही हेडर-आर्ग है?
खतरे

@dangom: हेडर आर्ग्स का एक ही सेट लैंग के लिए सेव: शेल बनाम लैंग: श और हेडर-आर्ग्स: शेल बनाम हेडर-आर्ग्स: श लेकिन दोनों को शून्य पर सेट करता है। $ 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आपके सिस्टम पर स्थापित किया गया कोई भी शेल कार्य करेगा।


मैं अभी भी उलझन में हूं कि इनपुट वैरिएबल में इतना बदलाव क्यों हुआ। क्या यह बैश चर के साथ कुछ अलग कर रहा है?
stsquad
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.