BASHプログラミング
 Computer >> コンピューター >  >> プログラミング >> BASHプログラミング

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

Linuxシェルにログインすると、特定の作業環境を継承します。 環境 、シェルのコンテキストでは、コマンドが意図したとおりに機能することを保証する特定の変数がすでに設定されていることを意味します。たとえば、PATH環境変数は、シェルがコマンドを探す場所を定義します。これがないと、Bashで実行しようとするほとんどすべてが、コマンドが見つかりませんで失敗します。 エラー。あなたの環境は、あなたが日常の仕事をしている間はほとんど見えませんが、非常に重要です。

シェル環境に影響を与える方法はたくさんあります。 〜/ .bashrcなどの構成ファイルに変更を加えることができます および〜/ .profile 、起動時にサービスを実行したり、独自のカスタムコマンドを作成したり、独自のBash関数をスクリプト化したりできます。

ソースを使用して環境に追加

Bash(および他のいくつかのシェル)には、 sourceと呼ばれる組み込みコマンドがあります。 。そして、ここで混乱する可能性があります: source コマンドと同じ機能を実行します (はい、それは1つのドットにすぎません)、そしてそれはではありません 同じソース Tclとして コマンド( man source と入力すると、画面に表示される場合があります )。組み込みのソース コマンドがPATHにありません 実際には、まったく。これはBashの一部として含まれているコマンドであり、それに関する詳細情報を取得するには、 help sourceと入力します。 。

コマンドはPOSIXに準拠しています。 ソース コマンドはPOSIXで定義されていませんが、と互換性があります。 コマンド。

Bashによるとhelp source コマンドは、現在のシェルでファイルを実行します。 「現在のシェル内」という句は、サブシェルを起動しないことを意味するため、重要です。したがって、 sourceで実行するものは何でも 現在内で発生し、影響します 環境。

sourceの方法を調べる前に 環境に影響を与える可能性がある場合は、 sourceを試してください テストファイルで、期待どおりにコードが実行されることを確認します。まず、簡単なBashスクリプトを作成し、 hello.shというファイルとして保存します。 :

#!/usr/bin/env bash
echo "hello world"

sourceを使用する 、実行可能ビットを設定しなくても、このスクリプトを実行できます:

$ source hello.sh
hello world

組み込みのを使用することもできます 同じ結果を得るコマンド:

$ . hello.sh
hello world

ソース および コマンドはテストファイルの内容を正常に実行します。

変数を設定して関数をインポートする

sourceを使用できます include を使用するのと同じように、ファイルをシェル環境に「インポート」します。 ライブラリまたはimportを参照するためのCまたはC++のキーワード モジュールを取り込むためのPythonのキーワード。これは、 sourceの最も一般的な使用法の1つです。 、これは .bashrcに含まれる一般的なデフォルトです。 sourceへのファイル .bash_aliasesというファイル ログイン時に、定義したカスタムエイリアスが環境にインポートされるようにします。

Bash関数をインポートする例を次に示します。まず、 myfunctionsというファイルに関数を作成します 。これにより、パブリックIPアドレスとローカルIPアドレスが出力されます:

function myip() {
        curl https://icanhazip.com      

        ip addr | grep inet$IP | \
        cut -d"/" -f 1 | \
        grep -v 127\.0 | \
        grep -v \:\:1 | \
        awk '{$1=$1};1'
}

関数をシェルにインポートします:

$ source myfunctions

新しい機能をテストします:

$ myip
93.184.216.34
inet 192.168.0.23
inet6 fbd4:e85f:49c:2121:ce12:ef79:0e77:59d1
inet 10.8.42.38
ソースを検索

sourceを使用する場合 Bashでは、現在のディレクトリで参照しているファイルを検索します。これはすべてのシェルで発生するわけではないため、Bashを使用していない場合はドキュメントを確認してください。

実行するファイルが見つからない場合、Bashは PATHを検索します 代わりは。繰り返しになりますが、これはすべてのシェルのデフォルトではないため、Bashを使用していない場合はドキュメントを確認してください。

これらは両方ともBashの便利な機能です。この動作は、一般的な機能をドライブの中央の場所に保存し、環境を統合開発環境(IDE)のように扱うことができるため、驚くほど強力です。関数がローカルで同等の/usr / include にあることがわかっているので、関数がどこに格納されているかを心配する必要はありません。 、したがって、それらを調達するときにどこにいても、Bashはそれらを見つけます。

たとえば、〜/ .local / includeというディレクトリを作成できます。 一般的な関数のストレージ領域として、このコードブロックを .bashrcに配置します ファイル:

for i in $HOME/.local/include/*;
  do source $i
done

これにより、〜/ .local / includeにカスタム関数を含むすべてのファイルが「インポート」されます。 シェル環境に。

Bashは、現在のディレクトリと PATHの両方を検索する唯一のシェルです。 sourceのいずれかを使用する場合 または コマンド。

オープンソースにソースを使用する

sourceを使用する または ファイルを実行することは、変更をモジュール化したまま、環境に影響を与える便利な方法です。次回、コードの大きなブロックをコピーして .bashrcに貼り付けることを考えているとき ファイルを作成し、関連する関数またはエイリアスのグループを専用ファイルに配置してから、 sourceを使用することを検討してください。 それらを摂取します。


  1. ターミナルでよりスマートに動作するためのBashのヒントとコツ

    Linuxユーザーとして、私たちが最初に端末を開いて、最も効率的で強力かつ柔軟な方法でシステムの作業を開始するのは特別な瞬間です。ただし、ターミナルへの最初の侵入は、カーソルの点滅と無限の可能性の世界だけで迎えられるため、恐ろしい可能性があります。これを支援するために、ターミナルでハードではなくスマートに動作するためのBashのヒントとコツをいくつか紹介します。 Aproposを使用したコマンドの検索 Apropos(app-row-POE)は、 manを使用してコマンドを検索できるコマンドです。 または、説明に基づいた手動エントリ。コマンドのマニュアルページを見つけたことがあれば、次のよう

  2. Linuxでwatchコマンドを使用する方法と例

    Linuxのwatchコマンドは1つのことを行います。コマンドを繰り返し、結果を繰り返し出力して、変更を監視できるようにします。使用方法は次のとおりです。 watchコマンド構文 watchコマンドの構文は次のとおりです。 watch OPTIONS COMMAND 注: オプション 以下の表のオプションのリストである必要があります。これにより、ウォッチのデフォルトの動作が変更されます。 コマンド コマンド 監視するコマンドです 繰り返し実行する必要があります。これは、出力を監視します 見る 中断されるまで実行されます(したがって、 CTRL+Cを押して終了します ) オプション 時