端末に入力するコマンドとスクリプトに含めるコマンドの間に違いはありますか?
端末はシェル(ほとんどの場合bash
)を実行します。これは、コマンドを要求して実行するシェルです。
このインタラクティブモードの他に、シェルを使用してファイルからコマンドを実行することもできます。ファイル内のコマンドを実行するには、bash script
のようにシェルを直接呼び出すか、ファイルを "Shebang" #!/bin/bash
で開始して実行可能(chmod +x script
)にすることができます。次に、スクリプトをバイナリのように扱い、たとえば./script
として実行するか、シェルが探している場所に配置します。 (echo $PATH
)
ほとんどの場合、インタラクティブシェルと実行に使用されるシェルはどちらもbash
です。 「初日Linuxの学習」の観点から見ると、bashはどちらのモードでもまったく同じように機能します。 -後で、わずかな違いについてつまずくかもしれません。本当に詳しく知りたい場合は、man bash
を読み、「インタラクティブ」に言及している場所を検索することをお勧めします。 (/
を押すと、manページを検索できます。)
注意すべき重要な点の1つは、スクリプトが新しいプロセスとして実行されることです。これは特に、スクリプトで設定された変数が呼び出し元のシェルに表示されないことを意味します。
$ 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
と入力してみてください)。
対話型セッションとスクリプト実行では、同じインタープリターの構成が異なる場合があります。
番号。スクリプトは、ターミナルに入力できるコマンドのリストです。
スクリプトの全体をターミナルに貼り付けることができ、結果はスクリプトを実行した場合と同じになります。
逆に、ファイル内に端末コマンドを「保存」して再利用可能なスクリプトに変換し、家族や友人と共有することができます。