org-babel에서 sh와 shell의 차이점은 무엇입니까?


12

org-mode에서 내 쉘 스크립트로 데이터를 소싱하는 실험을하고 있으며 이상한 점을 겪었습니다.

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

무슨 일이야?


1
ob-sh는 ob-shell에 찬성하여 사용되지 않는 것 같습니다 ( 메일 목록 의이 스레드 에서 볼 수 있듯이 ).
dangom

그들이 서로 별명이라면 왜 행동의 차이가 있습니까?
stsquad '

설정에 이상한 점이 있습니다. 나는 여기에 행동의 차이가 보이지 않습니다. $ SHELL을 반향하면 둘 다 동일한 쉘을 얻습니다. 또한 C-c C-v I두 src-blocks에 동일한 헤더 인수가 있는지 확인 하려고 했 습니까?
dangom

@dangom : 흠 : Lang : shell vs Lang : sh 및 header-args : shell vs header-args : sh에 대해 동일한 헤더 인수 세트를 저장하지만 모두 nil로 설정합니다. $ SHELL은 두 경우 모두 bash를보고합니다.
stsquad '

답변:


8

차이점은 블록을 평가하기 위해 어떤 쉘이 호출 되는지 입니다. 구체적으로 호출 shell하는 동안 기본 쉘이 무엇이든 sh호출 /bin/sh합니다. 기본 쉘은 아마도 bash이며 확장명은 sh입니다. echo $0쉘이 실행중인 실행 파일을 알려줍니다 :

#+BEGIN_SRC shell
echo $0
#+END_SRC

#+RESULTS:
: /bin/bash


#+BEGIN_SRC sh
echo $0
#+END_SRC

#+RESULTS:
: sh

org-babel-shell-names시스템에 설치된 모든 쉘 이 작동합니다.


입력 변수가 왜 그렇게 녹아 내는지에 대해서는 여전히 혼란 스럽습니다. 이 배쉬가 변수와 다른 것을하고 있습니까?
stsquad
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.