このコマンドの重要性は何ですかexport COLUMNS
?
私が知っているのは、それがグローバル変数であることだけです。
* nixスクリプトの冒頭でよく見られます。
答え1
現在の端末ウィンドウの幅(ASCII文字)。
からman bash
:
COLUMNS
Used by the select builtin command to determine the terminal
width when printing selection lists. Automatically set upon
receipt of a SIGWINCH.
より一般的なものもありますksh
:
COLUMNS
If this variable is set, the value is used to define the
width of the edit window for the shell edit modes and for
printing select lists.
実際の部分では、仮想端末ウィンドウのサイズが変更されると、この変数の値も変更されることに注意してください。 (上記の内容がSIGWINCH
アクティブシェルに転送される場合です。)
答え2
この回答は、Solaris、HP-UX、AIX、BSD、Linux(どのディストリビューション?)など、どのようなシステムでこのメッセージが表示されるのか言っていないためです。
環境変数 ROWS および COLUMNS を設定するために使用される呪われた方法でユーザーと対話するシェルスクリプト。
Cursesスタイルの相互作用は、Windowsシステムの前にさかのぼります。したがって、これらのプログラムは通常、xtermウィンドウのサイズを知るために何もしません。したがって、多くの呪いベースのプログラムは、ROWSおよびCOLUMNS環境変数を使用してフィールドとラベルを配置する方法を決定します。
時々、シェルがxtermで実行を開始すると、ROWSおよびCOLUMNS環境変数を見つけて設定しようとします。多くの古いSunOSおよびSolarisシステムでは、これを実行するために/ etc / profileを使用しています。時にはSIGWINCH(少なくともSunOSとSolarisでは)がROWS変数とCOLUMNS変数を設定するために使用されます。ベンダーはxtermを愚かな方法で修正し、xtermで実行されているプロセスグループへのSIGWINCHの配信を中断することが多く、呪いスタイルの相互作用は本当に悪いように見えました。
答え3
文字通り、一部のアプリケーションに端末の幅に対応する文字位置の数を通知します。ほとんどすべての端末は通常のグリッドを使用します。ワイヤーそしてリスト。
LINES
最初はCOLUMNS
(1980年頃)内部変数以来。vi
curses
シェル変数名前が紹介されます。彼らはいつ可能SunOS4はすでにこれをサポートしており、マニュアルページに記載されている唯一のものは呪いです。ls
:
出力形式を決定するには
-C
、-x
と-m
オプション、/usr/5bin/ls
環境変数を使用し、COLUMNS
出力ラインで使用可能な文字位置の数を決定します。この変数が設定されていない場合用語情報データベースは、環境変数に基づいて列数を決定するために使用されます。TERM
。この情報を取得できない場合は、80列が想定されます。
つまり、この機能はSystem Vで提供され、後で導入されたようです。この約束は1989年、BSDバージョンの場合ls
。
SVr4curses(およびそれ以降のX / Open Curses)は次の使用法を文書化します。環境次のように端末記述の端末サイズ値をオーバーライドするために使用できるLINES
変数COLUMNS
use_env
機能。これncurses のマニュアルページこの機能を文書化してください。
同様に、シェルプログラミングの紹介もSystem Vから来たようです。ksh
。SIGWINCH
これらの変数をいつ、どのように結合するかは把握するのが難しく、議論の余地があるかもしれません。しかし現在のこのシェルセットが用意されています。シェル変数(いいえ 環境変数)応答SIGWINCH
:ksh93
、、。 (もう一度)設定していbash
ないようです。 Solaris 10を確認しましたが、変数が設定されていません。zsh
SIGWINCH
fish
ksh88
bash 1.13(1993年9月リリース)の以前の変更ログは、このSIGWINCH
機能が1993年3月に追加されたことを示しています。Sven Maschekのページksh93は同年の終わりにリリースされたと推定されています。
シェル変数に値を配置すると、簡単にエクスポートして(環境変数に変更)、特定のプログラムの動作を変更できます。ただし、この変数がある理由は、端子の寸法を決定するのが難しい場合に便利です。