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?


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á.


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
Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.