Was ist der Unterschied zwischen sh und shell für org-babel?


12

Ich experimentiere mit der Beschaffung von Daten aus dem Organisationsmodus in meine Shell-Skripte und bin auf eine Verrücktheit gestoßen:

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

Irgendeine Idee, was los ist?


1
Es scheint, als ob ob-sh zugunsten von ob-shell veraltet ist (wie in diesem Thread der Mailingliste zu sehen).
— Dangom

Wenn sie nur Aliase zueinander sind, warum dann der Unterschied im Verhalten?
— stsquad

Etwas seltsames mit deiner Konfiguration. Ich sehe hier keinen Unterschied im Verhalten. Wenn ich $ SHELL wiedergebe, bekomme ich für beide die gleiche Shell. C-c C-v IHaben Sie auch versucht zu überprüfen, ob beide src-Blöcke die gleichen Header-Argumente haben?
— Dangom

@dangom: hmm gleiche Menge von Header-Argumenten außer für Lang: Shell gegen Lang: sh und Header-Argumente: Shell gegen Header-Argumente: sh, aber beide auf Null gesetzt. $ SHELL meldet in beiden Fällen Bash.
— stsquad

Antworten:


8

Der Unterschied besteht darin, welche Shell aufgerufen wird, um Ihren Block auszuwerten. shellAnrufe , was auch immer Ihre Standard - Shell während ist shAnrufe /bin/shspeziell. Ihre Standard-Shell ist wahrscheinlich bash, eine Erweiterung von sh. echo $0wird Ihnen sagen, welche ausführbare Datei Ihre Shell ausführt:

#+BEGIN_SRC shell
echo $0
#+END_SRC

#+RESULTS:
: /bin/bash


#+BEGIN_SRC sh
echo $0
#+END_SRC

#+RESULTS:
: sh

Alle org-babel-shell-namesauf Ihrem System installierten Shells funktionieren.


Ich bin immer noch verwirrt darüber, warum die Eingabevariable so munged wird. Macht diese Bash etwas anderes mit der Variablen?
— stsquad
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.