web-dev-qa-db-ja.com

単純なコマンドのエイリアスとエクスポート

lessのような単純なコマンドの場合、エイリアスを作成するか、オプションをエクスポートする方が良いですか?どちらか一方の利点はありますか?

たとえば、lessで常に-Rオプションを使用して生の文字を表示したい場合、次の両方の解決策が機能します。

  1. export LESS='-R'
  2. alias less='less -R'

このような単純なケースの場合、一方が他方よりも優れている点はありますか?一方が問題を引き起こし、他方が問題を起こさないシナリオはありますか?

いくつかのinfoページとmanページを読み、グーグルで調べましたが、それでもまだ行き詰まっています。

34
skittleys

2つの違いの1つは、エイリアスはシェル機能にすぎないことです。環境変数は、すべてのサブプロセスによって継承されます(意図的にクリアしない限り)。

lessが別のシェル(例:tcsh)、manvimpsqlなど.

30
200_success

使用しているツールに大きく依存します。どちらかを使用できるツールもあれば、1つしか使用できないツールもあります。

他から呼び出されて環境変数を読み取り、同じスイッチを受け入れるコマンドがありますが、makeとしてのコンパイラーのように、それぞれに同じスイッチを追加するのは面倒です。ここでは環境変数が優れています。変数を設定して、それを忘れます。また、一時的なものであり、単一のコマンドで機能することもできます。

一番下の行は、設定の優先事項であり、タスクに最適なアクションです。エイリアスの設定が環境変数よりも簡単で永続的な場合もあれば、同じように動作する一連のツールが必要な場合もあります。環境変数が大好きです。

1
Braiam