Linuxのsourceコマンドを使用してファイルから読み込んで実行する方法
Linuxのsourceコマンドは、現在のシェルでファイルを読み込み実行するシェル組み込みコマンドです。Linuxでの使い方は以下の通りです。
sourceは、引数を受け入れ、スクリプト内のコマンドを解析し、シェル環境でそれらを実行する便利な組み込みシェルコマンドです。ファイルの内容はsourceによって読み込まれ、その後Tool Command Language(TCL)インタープリタに渡され、コマンドが実行されます。
Linuxでコマンドを実行し、シェル環境で作業するためのsourceの使い方を学び、bashコマンドとの違いについて簡単に説明します。
ファイル内のコマンドを実行するためにソースを使用します
sourceコマンドを使用するには、まずサンプルファイルを作成し、いくつかのシェルコマンドでそれを埋める必要があります。まず、touchコマンドを使って新しいファイルを作成してください。お好みのテキストエディタでそのファイルを開き、いくつかの基本的なシェルコマンドを書いてください。
touch test.txt
vi test.txt
Write the commands in the text file:
echo "Hello!"
pwd
ls
Source the file with either source or the dot syntax
. test.txt
source text.txtテキストファイルを書き出し、それをソースコマンドの引数として渡します。システムはファイル内のコマンドを実行し、出力を返します。
基本的な使い方がわかったので、Bashシェル環境を変更してみましょう。ただし、進む前にLinuxの環境変数について基本的な理解を持っている必要があります。
Bashシェル環境を更新するには、sourceコマンドを使用します。
Linuxでは、環境変数は引き継がれますが、変更不可能です。環境変数$TESTを変更するBashシェルスクリプトを実行すると、スクリプトは新しいフォークされたシェルプロセスを生成し、$TESTの変更は元のBash環境ではなく、その中で行われます。
子プロセスは親プロセスの環境を変更することはできません。自分自身の環境だけを変更できます。実践例を使ってこれを理解しましょう:
export TEST="deb"
vi example
Type these commands in the file
export TEST="bed"
echo $TEST
Write out the file, make it executable, and then execute it
chmod +x example
./example this will return "bed"
echo $TEST this will return "deb"ここでソースコマンドの出番です。ソースコマンドを使用することで、通常はフォークされた別のシェル環境で実行されるスクリプトを同じシェル環境内で実行できます。したがって、環境変数を変更するスクリプトをソースすると、Bashシェル環境にその変更が反映されます。
試すために、上のコードボックスにあるコマンドを新しいファイルに書き込み、実行可能にするのではなく、ソースコマンドを使用してください。
Create a new file and edit it
vi test file
. test_file
echo $TEST This will return "bed"ご覧のように、sourceコマンドを使用することで、親プロセスの環境変数を更新することができました。これがsourceコマンドの主な使用ケースです。つまり、親環境を変更することです。
それがソースコマンドでBashシェル環境を更新するために必要なすべての手順です。
Linuxのbashコマンドとsourceコマンドの違い
Linuxのbashコマンドとsourceコマンドの違いは、bashコマンドでスクリプトを実行すると、Linuxカーネルに新しいBashプロセスを作成してスクリプトを読み取り実行するように指示し、その出力を元のシェルプロセスにコピーして表示することです。
しかし、sourceコマンドは現在のシェルプロセス内でファイルを読み取り評価するシェルの組み込みコマンドです。したがって、スクリプトによって行われたすべての変更はBashシェルに保持されます。
ソースコマンドエラーのトラブルシューティング
いくつかのLinuxシステムでは、sourceコマンドを使用しようとすると「source not found」というエラーに遭遇することがあります。このエラーは2つの方法で修正できます。
シェルを変更する
いくつかのシェルは source コマンドをサポートしていません。その場合は、chsh -s ($which shell_name) コマンドを使ってシェル環境を変更する必要があります。
シェルを変更した後、新しいターミナルを起動し、sourceコマンドを使用してみてください。新しいシェルがソースをサポートしていれば、問題なく動作するはずです。
2. ドット/ピリオド構文を使用する
一部のシェル環境では「source」構文がサポートされていませんが、代わりに「.」構文が使用できます。「source」構文はBashではドットの同義語です。しかし、これはPOSIXシェルでは機能しないため、最大の互換性のためにドット構文を使用してください。
知っておくべき基本的なLinuxコマンド
Linuxシェルコマンドは、ターミナルを使用してシステムと対話する優れた方法です。それらは*NIXシステムを使用する本質です。
すべてのコマンドを知っている必要はありませんが、役立ついくつかに慣れておくことは、Linuxの世界に深く足を踏み入れる際に確実に役立つでしょう。


