bashスクリプトのコマンドとターミナルのコマンドの違い


回答:


7

端末はシェル(ほとんどの場合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、内部スクリプトからも見えません。


1

一般に、答えは「いいえ」で、シェルのコマンドはスクリプト、構文、およびセマンティクスで同じです。

しかし、環境の構成(使用される変数と設定される変数)に関連する小さなニュアンスがたくさんあります。

  • Linuxのための選択のインタラクティブシェルはbashのですが、スクリプトは、多くの場合、(他の通訳を使用するshの前身である、bashkshあなたが使用されているものをシェルを考慮に入れる必要がありますので、(現在のシェルの名前は、bashとのパーです)は、伝統的に変数SHELLに保持されていますecho $SHELL

  • 対話型セッションとスクリプト実行では、同じインタープリターの構成に違いがある場合があります。


-1

いいえ。スクリプトは、ターミナルに入力できるコマンドのリストです。

スクリプトの全体をターミナルに貼り付けると、結果は実行と同じになります。

逆に、端末コマンドをファイル内に「保存」し、それを再利用可能なスクリプトに変換して、家族や友人と共有できます。


4
いいえ。コンテンツを貼り付けることは、スクリプトをソースすることと同等です。これにより、現在のシェルのすべての種類のオプションが変更されますが、スクリプトを実行するだけでは変更されません。
michas

あなたは正しいです。しかし、彼の質問に関する限り。かなり似ていると言えると思います。しかし、はい、ミカが言ったことを初心者の言葉で翻訳するために。スクリプトの内容を貼り付けることは、doと同等ですsource script_file。現在のコンテキストでENV変数を編集します。明示的に使用し./script_fileない限り、ENVを変更しないようにスクリプトを実行しますexport
マチューJ.

1
いいえ。exportスクリプトで呼び出しシェルの変数を変更することはできません。同じことは、PWD、定義されたエイリアス、関数などのようなものにも当てはまります。変更できるのは、インタラクティブに、またはファイルをソースすることだけです。しかし、はい、それはおそらく誰かが最初の日につまずくことはないでしょう。:)
michas

1
@michas:さて、それでも正しい説明をする方が良いです。初心者が意欲的で、仕事の習慣がある場合は、すぐに元気になります。子供の話を聞こうとすると、足をつまずいて理解できない印象を与えるだけでなく、初心者が後で戻ってくるかもしれません。私は自分を初心者だとは思っていませんが、知らないことがたくさんあります。「あなたはまだいない、後輩」だから誰かが私の質問に答えるのを差し控えるとin辱されます。
エマニュエルベルク
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.