Qual é a diferença entre sh e shell para org-babel?

12

Estou experimentando o fornecimento de dados do modo organizacional para meus scripts de shell e me deparei com uma estranheza:

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

alguma ideia do que está acontecendo?

stsquad
fonte
1
Parece que o ob-sh foi descontinuado em favor do ob-shell (como visto neste tópico da lista de discussão).
dangom 6/09/17
Se eles são apenas aliases entre si, por que a diferença de comportamento?
stsquad
Algo estranho com sua configuração. Não vejo diferença de comportamento aqui. Se eu ecoar $ SHELL, recebo o mesmo shell para ambos. Além disso, você tentou C-c C-v Iverificar se os dois blocos src têm o mesmo cabeçalho-args?
dangom 6/09/17
@dangom: hmm mesmo conjunto de argumentos de cabeçalho, exceto para Lang: shell vs Lang: sh e header-args: shell vs header-args: sh, mas ambos configurados para zero. $ SHELL relata bash nos dois casos.
stsquad

Respostas:

8

A diferença é qual shell é chamado para avaliar seu bloco. shellchama qualquer que seja o seu shell padrão, enquanto shchama /bin/shespecificamente. Seu shell padrão provavelmente é o bash, que é uma extensão do sh. echo $0lhe dirá qual executável seu shell está executando:

#+BEGIN_SRC shell
echo $0
#+END_SRC

#+RESULTS:
: /bin/bash


#+BEGIN_SRC sh
echo $0
#+END_SRC

#+RESULTS:
: sh

Qualquer um dos shells org-babel-shell-namesinstalados no seu sistema funcionará.

erikstokes
fonte
Ainda estou confuso sobre o motivo pelo qual a variável de entrada fica tão distorcida. Essa festança está fazendo algo diferente com a variável?
Stsquad