Quelle est la différence entre sh et shell pour org-babel?


12

J'expérimente avec le sourcing de données du mode org dans mes scripts shell et j'ai rencontré une bizarrerie:

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

Une idée de ce qui se passe?


1
Il semble que ob-sh soit déconseillé au profit de ob-shell (comme on le voit dans ce fil de la liste de diffusion).
dangom

S'ils ne sont que des alias les uns des autres, pourquoi la différence de comportement?
stsquad

Quelque chose de bizarre avec ta config. Je ne vois aucune différence de comportement ici. Si je fais écho à $ SHELL, j'obtiens le même shell pour les deux. Avez-vous également essayé C-c C-v Ide vérifier si les deux blocs src ont les mêmes arguments d'en-tête?
dangom

@dangom: hmm même ensemble d'arguments d'en-tête sauf pour Lang: shell vs Lang: sh et header-args: shell vs header-args: sh mais les deux sont définis sur nil. $ SHELL signale bash dans les deux cas.
stsquad

Réponses:


8

La différence est quel shell est appelé pour évaluer votre bloc. shellappelle quel que soit votre shell par défaut tout en shappelant /bin/shspécifiquement. Votre shell par défaut est probablement bash, qui est une extension de sh. echo $0vous dira quel exécutable votre shell exécute:

#+BEGIN_SRC shell
echo $0
#+END_SRC

#+RESULTS:
: /bin/bash


#+BEGIN_SRC sh
echo $0
#+END_SRC

#+RESULTS:
: sh

Tous les shells org-babel-shell-namesinstallés sur votre système fonctionneront.


Je suis toujours confus quant à la raison pour laquelle la variable d'entrée est tellement munged. Est-ce que bash fait quelque chose de différent avec la variable?
stsquad
En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.