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


33

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

たとえば、生の文字を表示lessする-Rオプションを常に使用する場合、これらのソリューションは両方とも機能します。

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

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

私はいくつかのページとグーグルを読んinfoでいmanますが、まだこれに固執しています。


1
いいえ、それは本当に個人的な好みに帰着します。意見に基づいているようですので、これを閉じることに投票しました。
slm

さらに3つのソリューション:シェル関数を作成します(シェルでのみ機能しますが、対話的である必要はありません)。〜/ binまたは任意の場所にスクリプトを作成します(シェルの起動オーバーヘッドがありますが、シェルの実行や他のプログラムからすぐに機能し、永続的です)。プログラム固有の設定ファイル(のためにlessあなたが使用してそれを行うことができますlesskey
deltab

3
@slmそれは意見に基づくものではなく、少なくともそうすることを意図していませんでした。特により複雑なシナリオでは、より多くのオーバーヘッドが必要になり、リソースを不必要に使用する可能性があります。* nixの世界では、従来よりも正確である場合もあれば、正式な標準さえどこかにある場合もあります。プログラマーは、すべての意図と目的のために同じ目標を達成したとしても、「ずさんなコーディング」に常に悩まされます。
スキトルズ

回答:


30

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

環境変数があっても作業することが多くなりless、このような(例えば、別のシェルを介したとして、間接的に起動されるtcsh)、 、manvimpsqlなど


3
特に、エイリアスはインタラクティブシェルでのみ機能します。シェルスクリプトでエイリアスを使用することはできません。bash -c 'alias ll="ls -l"; ll'エイリアスは使用しません。
デルタブ

ああ、私はそれを知りませんでした!したがってexport LESS='-R'、.zshrcを使用してzshセッションを開き、その同じセッションでbashに切り替えた場合(.bashrcにエクスポートなし)、環境変数は設定されますか?私は....両方が失われるだろうと思っているだろう
skittleys

@deltabああ、はい、grepのカラーリングの問題のおかげで、その区別について知っています。ご指摘いただきありがとうございます。
スキトルズ

1

使用しているツールに大きく依存します。いずれかを使用できるツール、または1つだけを使用できるツールがあります。

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

要するに、環境設定よりもエイリアスの設定が簡単で永続的な場合と、同じように動作する一連のツールが必要な場合があります。環境変数が大好きです。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.