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のために廃止されたようです(メーリングリストのこのスレッドで見られるように)。
だんごむ2017

それらがお互いのエイリアスでしかない場合、なぜ動作の違いがあるのでしょうか?
stsquad

設定がおかしいです。ここでは動作に違いは見られません。$ SHELLをエ​​コーすると、両方に同じシェルが表示されます。また、C-c C-v I両方のsrc-blockに同じheader-argsがあるかどうかを確認しようとしましたか?
dangom 2017

@dangom:hmm Lang:shell vs Lang:shとheader-args:shell vs header-args:shのヘッダー引数セットは同じですが、どちらもnilに設定されています。$ SHELLはどちらの場合もbashを報告します。
2017

回答:


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システムにインストールされているすべてのシェルが機能します。


入力変数がそれほど変化しない理由について、私はまだ混乱しています。このbashは変数で何か違うことをしていますか?
stsquad 2017
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.