GNU/Linux >> Linux の 問題 >  >> Linux

「でスクリプトを実行します。 」と「ソース」で?

  1. 次の2つのbashスクリプトの実行方法が同等かどうか疑問に思いました

    . ./myScript.sh
    
    source myScript.sh
    
  2. どちらもスクリプトを実行する代わりにスクリプトのコンテンツを実行していますか?つまり、スクリプトを実行するためのサブシェルを作成していませんか?

承認された回答:

  1. それらはまったく同じことをするという点でbashと同等です。一方、source は5文字長く、POSIXのみのシェルまたはBourneには移植できませんが、. (ドット)はそうなので、sourceをわざわざ使うことはありません 。

  2. それは正しいです–ファイルを調達すると、現在のシェルでコマンドが実行され、現在のシェル環境に影響します。ソースファイルに引数を渡すことはできますが、bashは実際には$PATHを調べます。 スラッシュが含まれていない場合は、通常のコマンドと同じようにファイル名を指定します。

. vssource 、しかしあなたの例では、

. ./myScript.sh 

と同じではありません

source myScript.sh

.の間 およびsource 機能的には同一、myScript.sh および./myScript.sh 同じではありません。 ./myScript.sh以降 スラッシュが含まれ、パスとして解釈され、シェルは./myScript.shを使用するだけです 。ただし、myScript.sh スラッシュがないため、シェルは$PATHを実行します 最初に検索してください。これは、POSIXで指定されている. 。ほとんどのシェルはデフォルトでこれを使用しますが、拡張機能(パス検索後の現在の作業ディレクトリでの検索など)または. /source


Linux
  1. スクリプトとscriptreplayを使用して端末を記録します

  2. LvmとDm-cryptでトリミングしますか?

  3. フォルダをMvとマージしますか?

  1. スクリプトが実行されていることを確認しますか?

  2. 関数とパラメータを変数として持つシェルスクリプト?

  3. シェルスクリプトの並列実行

  1. sourceコマンドを使用して関数と変数をBashにインポートします

  2. Linuxスクリプトコマンドを使用してターミナルセッションをキャプチャして出力する方法

  3. phpmyadmin と suphp の実行