¿Cuál es la diferencia entre sh y shell para org-babel?


12

Estoy experimentando con la obtención de datos del modo org en mis scripts de shell y me he encontrado con una rareza:

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

¿Alguna idea de lo que está pasando?


1
Parece que ob-sh está en desuso a favor de ob-shell (como se ve en este hilo de la lista de correo).
— dangom

Si solo son alias entre sí, ¿por qué la diferencia de comportamiento?
— stsquad

Algo raro con tu configuración. No veo ninguna diferencia en el comportamiento aquí. Si hago eco de $ SHELL, obtengo el mismo shell para ambos. Además, ¿trató C-c C-v Ide verificar si ambos bloques src tienen los mismos argumentos de encabezado?
— dangom

@dangom: hmm el mismo conjunto de argumentos de encabezado salvo para Lang: shell vs Lang: sh y header-args: shell vs header-args: sh pero ambos configurados en nulo. $ SHELL informa bash en ambos casos.
— stsquad

Respuestas:


8

La diferencia es qué shell se llama para evaluar su bloque. shellllama cualquiera que sea su shell predeterminado mientras que shllama /bin/shespecíficamente. Su shell predeterminado es probablemente bash, que es una extensión de sh. echo $0le dirá qué ejecutable está ejecutando su shell:

#+BEGIN_SRC shell
echo $0
#+END_SRC

#+RESULTS:
: /bin/bash


#+BEGIN_SRC sh
echo $0
#+END_SRC

#+RESULTS:
: sh

Cualquiera de los shells org-babel-shell-namesinstalados en su sistema funcionará.


Todavía estoy confundido sobre por qué la variable de entrada se vuelve tan modificada. ¿Esta bash está haciendo algo diferente con la variable?
— stsquad
Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.