
.bashrc
ターミナルの幅が少なくとも 80 文字の場合は長いプロンプトを表示するように設定しました。それ以外の場合は、劣化した小さいプロンプトが表示されます。
これを実現するために、次のステートメントを使用しますif
。
dp_smaller_than=80
if [ $COLUMNS -lt $dp_smaller_than ]
then
PROMPT_COMMAND="degr_prompt"
else
PROMPT_COMMAND="full_prompt"
fi
このステートメントの前にコマンドまたはその他のコマンドを配置した場合にのみ正しく動作しますsleep 0
。それ以外の場合は、次のエラーが表示されます。
[: -lt: unary operator expected
注記:ファイルの先頭にdegr_prompt
および関数が定義されています。full_prompt
答え1
COLUMNS
変数は bash によって設定されますupon receipt of a SIGWINCH.
(Shell Variables
のセクションを参照man bash
)。これは環境変数ではないため、スクリプトでは設定されません。以下を自分で確認してください:
$ export COLUMNS=$COLUMNS
$ ./your-script.sh
これで動作します。COLUMNS
スクリプト内で の値を取得する必要があります。tput
たとえば、次のように使用できます。
$ tput cols
186
答え2
COLUMNS
何らかの理由で が設定されていません.bashrc
。
次のようにして列を取得しますtput cols
。
dp_smaller_than=80
if [ $(tput cols) -lt $dp_smaller_than ]
then
PROMPT_COMMAND="degr_prompt"
else
PROMPT_COMMAND="full_prompt"
fi