変数とエイリアスは同じカテゴリに属していますか?

変数とエイリアスは同じカテゴリに属していますか?

これは用語/アーキテクチャの問題です。

システムをより簡単に制御するために、最も基本的な実装のいくつかは変数とエイリアスです(一部はシンボリックリンクを追加できます)。

変数とシンボリックリンクの両方が「後ろからライブ」され、ユーザーが呼び出すことができます(私の考えでは、「拡張」が両方に良いようです)。

変数とエイリアスが同じカテゴリに属しているかどうかを尋ねています。リストを含むファイルの名前をよりよく指定したいからです(最初の部分は変数であり、2番目の部分は一部の変数にエイリアスを使用する部分です)。

2人が共有できるグループやカテゴリに似ている可能性がある「Background_data.sh」などの一般的な名前ではなく、より「標準的な」名前を指定したくありませんでした。

答え1

エイリアス、関数、変数などが属する「カテゴリ」は次のとおりです。環境、「シェル環境」のように。

変数とエイリアスはシンボリックリンクと同様に非常に異なります。いいえシェル環境の一部ですが、シェルとは独立したファイルシステムにあります。

  • シェル変数でも環境変数でも、変数は文字列形式でデータを保持します。

  • エイリアスは、頻繁に繰り返されるコマンドを入力する時間を節約するために、対話型シェルセッションで使用できる便利なショートカットです。エイリアスは、変数とは別の評価フェーズで拡張されます。あなたのスクリプトで以下を使用したいと思うかもしれません。機能エイリアスではなく、コマンド名を単にテキストに置き換える以上のものです1。

  • シンボリックリンクは、アクセス時に自動的にパスをチェックするファイルシステムの特殊な種類のファイルです。

ファイルを呼び出す方法については、一部のアプリケーションやプロセスの環境を設定するためにインポートする必要があるファイルのように聞こえる(たとえば、シェルを介して、またはそのコマンドを含むシェル内で)、次のようなことを提案.できshます。 、可能ですか?sourceapplication-name.envprocess-name.env


1スクリプトのエイリアスは私を少し迷惑させます。私が言ったように、エイリアスはインタラクティブシェルの便宜のためであるため、常にフラグ-Fls定義alias ls='ls -F'などを追加したいかもしれません。ただし、スクリプトではより詳細な情報が必要な場合があります。これには少なくとも2つの理由があります(次は個人的な意見です)。

  1. 話すかcp台本rmとしてこれをしなければならない。標準コマンドはスクリプトのエイリアスとしてオーバーライドしてはいけません。それ以外の場合、デバッグは非常にトリッキーになります。

  2. エイリアスは対話型コマンドラインで使用されます(速度を上げるか、指と手を節約するために入力し続けます)。一度だけスクリプトを作成して改善してみてください。これにより、他の人(または数週間後に自分自身)が読みやすく理解できるようにスクリプトを書くことができます。利点はメンテナンスの可能性です。

  3. エイリアスは、少なくとも関数とは異なり、パラメータを受け入れることはできません。これにより、機能がたくさんエイリアスよりも一般的です。たとえば、コマンドのエイリアスを設定する代わりに、ユーティリティを呼び出す前にパラメータが正しいことを確認してユーティリティを呼び出すだけでなく、結果が期待どおりに返されることを確認する関数を生成できます。必要に応じて、関数は独自のコマンドライン解析を実行することもできます。このようにしてスクリプト内で独自の「ユーティリティ」として機能します。

私は多くの人が作業しているプロジェクトのためのスクリプトを書いていますが、それは仕事用なので、これが私の視点です。

答え2

違いは他の答えで説明されています。あなたの目的に応じてファイル拡張子rcよく合うでしょう:

コマンド開始情報を含むすべてのファイルに使用されます。

<appname>rc<appname>.rcまたはのような様々な味があります<appname>-rc。よく知られている例には、/etc/inputrc~/.bashrcがあります~/.vimrc

答え3

技術的には、エイリアスはコマンドソルバーで使用される定義です。変数設定とエイリアス設定はどちらも次の形式です。仕事

エイリアスを設定、書き込み、設定解除、削除することはできますが、エイリアスはグローバルであり、値の保存以外の操作を実行するため、シェルの変数とは意味が異なります。

関連情報