回答:
端末はシェル(ほとんどの場合bash
)を実行します。シェルはコマンドを要求して実行します。
この対話モードに加えて、シェルを使用してファイルからコマンドを実行することもできます。ファイル内のコマンドを実行するには、次のようにシェルを直接呼び出すかbash script
、「shebang」でファイルを起動し#!/bin/bash
て実行可能にすることができます(chmod +x script
)。次に、スクリプトをバイナリのように扱い、たとえば、./script
シェルが探している場所にそれを実行したり、配置したりできます。(echo $PATH
)
ほとんどの場合、対話型シェルと実行に使用されるシェルの両方がbash
です。「Linuxを初めて学ぶ」という観点から見ると、bashは両方のモードでまったく同じように機能します。-後で、わずかな違いにつまずくかもしれません。本当に詳しく知りたい場合は、man bash
「インタラクティブ」に言及している場所を読んで検索することをお勧めします。(を押すと、manページを検索できます/
。)
注意すべき重要な点は、スクリプトが新しいプロセスとして実行されることです。これは特に、スクリプトで設定された変数が呼び出しシェルで表示されないことを意味します。
$ export a=1
$ echo $a
1
$ bash -c 'echo $a;a=2;echo $a' # change the value in a script
1
2
$ echo $a # value not changed here
1
$
エクスポートなしではa
、内部スクリプトからも見えません。
一般に、答えは「いいえ」で、シェルのコマンドはスクリプト、構文、およびセマンティクスで同じです。
しかし、環境の構成(使用される変数と設定される変数)に関連する小さなニュアンスがたくさんあります。
Linuxのための選択のインタラクティブシェルはbashのですが、スクリプトは、多くの場合、(他の通訳を使用するsh
の前身である、bash
、ksh
あなたが使用されているものをシェルを考慮に入れる必要がありますので、(現在のシェルの名前は、bashとのパーです)は、伝統的に変数SHELL
に保持されていますecho $SHELL
。
対話型セッションとスクリプト実行では、同じインタープリターの構成に違いがある場合があります。
いいえ。スクリプトは、ターミナルに入力できるコマンドのリストです。
スクリプトの全体をターミナルに貼り付けると、結果は実行と同じになります。
逆に、端末コマンドをファイル内に「保存」し、それを再利用可能なスクリプトに変換して、家族や友人と共有できます。
source script_file
。現在のコンテキストでENV変数を編集します。明示的に使用し./script_file
ない限り、ENVを変更しないようにスクリプトを実行しますexport
。
export
スクリプトで呼び出しシェルの変数を変更することはできません。同じことは、PWD、定義されたエイリアス、関数などのようなものにも当てはまります。変更できるのは、インタラクティブに、またはファイルをソースすることだけです。しかし、はい、それはおそらく誰かが最初の日につまずくことはないでしょう。:)