Skip to content

説明書 §8 その他

Koichi Murase edited this page Apr 16, 2020 · 38 revisions

[ 日本語 | English ] ≫ 説明書 [§1 基本 | §2 描画 | §3 束縛 | §4 編集 | §5 Emacs | §6 Vim | §7 補完 | §8 他]

8. その他

8.1 ble.sh の公開変数

8.1.1 シェル変数 BLE_VERSION

現在ロードされている ble.sh のバージョンを表す文字列が代入されます。

8.1.2 シェル変数 BLE_VERSINFO

現在ロードされている ble.sh のバージョン情報を含む配列を保持します。 ${BLE_VERSINFO[0]} から ${BLE_VERSINFO[2]} には、メジャーバージョン番号、マイナーバージョン番号、パッチレベルが格納されます。 ${BLE_VERSINFO[3]} には git のコミットIDが格納されます。 ${BLE_VERSINFO[4]} にはリリースステータス (alpha, beta, または release) が格納されます。 ${BLE_VERSINFO[5]} には noarch という値が格納されます (ble.sh は特定のシステムに依存せずにお使いいただけます)。

8.2 ble.sh の公開関数

8.2.1 関数 ble-import

ファイル SCRIPTFILE を既定の場所から検索し、読み込み済みでなければ source します。 オプション -d または --delay を指定した時、可能であれば遅延読み込みを行います。

ble-import [-d|--delay] SCRIPTFILE

8.2.2 関数 ble-autoload

指定した関数 FUNCTION の遅延ロードを設定します。 関数 FUNCTION が初回に呼び出された時に SCRIPTFILEble-import します。 SCRIPTFILE には FUNCTION の定義が含まれている必要があります。

ble-autoload SCRIPTFILE FUNCTION...

8.2.3 関数 ble-stackdump

デバグ用の関数です。現在のシェル関数のコールスタックの情報を出力します。 shopt -s extdebug が設定されている時、各関数呼び出しに使用された引数も出力します。

ble-stackdump MESSAGE

8.2.4 関数 ble-assert

デバグ用の関数です。COMMANDeval によって評価し、失敗した場合にはメッセージ MESSAGE と共にコールスタックの情報を出力します。

ble-assert COMMAND [MESSAGE]

8.3 内部の動作に関係する設定変数

8.3.1 設定変数 internal_exec_type

# 既定値
bleopt internal_exec_type=gexec   # ble-0.3以降
bleopt exec_type=gexec            # ble-0.2以前

コマンドを実行する時の文脈を制御します。 値 gexec が設定されている時、グローバルな文脈でコマンドが eval で評価されます。 値 exec (ble-0.3 迄) は関数内でコマンドを実行することを指定しますが、 デバグ用に残されていた機能でありテストされていない為 ble-0.4 で廃止されました。

8.3.2 設定変数 internal_ignoreeof_trap (文字列)

# 既定値
bleopt internal_ignoreeof_trap='Use "exit" to leave the shell.' # ble-0.3以降
bleopt ignoreeof_message='Use "exit" to leave the shell.'       # ble-0.2以前

C-d が入力された時に Bash が出力するメッセージを設定します。 Bash 3 に於いて C-d がユーザによって入力された事を検知する為に使われます。

8.3.3 設定変数 internal_suppress_bash_output (空/非空)

# 既定値
bleopt internal_suppress_bash_output=1  # ble-0.3以降
bleopt suppress_bash_output=1           # ble-0.2以前

非空文字列が設定されている時、Bash の本来の標準出力・標準エラー出力を端末に出力しません。 空文字列が設定されている時、Bash 本来の出力を端末に繋いだまま ble.sh による編集を実現します。 Bash 本来の出力を抑制しない設定は、ちらつきの問題がある為に現在はデバグ用に残されているのみでテストされていません。 通常は非空文字列を設定して、Bash の本来の出力は明示的に抑制するようにして下さい。

8.3.4 設定変数 internal_stackdump_enabled (算術式) (v0.2)

# 既定値
bleopt internal_stackdump_enabled=0   # ble-0.3以降
bleopt stackdump_enabled=0            # ble-0.2

ble.sh で予期しない状態を検知した時に、関数呼び出し履歴を画面に出力するかどうかを制御します。 非零の値を返した時に関数呼び出し履歴が画面に出力されます。

8.3.5 設定変数 history_lazyload (空/非空)

# 既定値
bleopt history_lazyload=1

非空文字列が設定されている時、履歴の遅延読み込みが有効になります。既定で有効です。 空文字列が設定されている時は、ble-attach 時に履歴の読み込みを完了してからユーザ入力を受け付けるようになります。

8.3.6 設定変数 idle_interval (算術式) (v0.3)

# 既定値
bleopt idle_interval='ble_util_idle_elapsed>600000?500:(ble_util_idle_elapsed>60000?200:(ble_util_idle_elapsed>5000?100:20))'

新しいユーザ入力が来ていないか確認する間隔を算術式で指定します。 変数 ble_util_idle_elapsed には最後にユーザ入力があってから経過した時間がミリ秒を単位として設定されています。 ユーザ入力がない時 (アイドル時) に裏で処理を実行する機能に於いて、ポーリングを実行する際に使われます。

8.3.7 設定変数 openat_base (整数)

# 既定値
bleopt_openat_base=30

この設定変数は ble.shsource する前に設定しておく必要があります。 従って、bleopt コマンドは使用せず、直接シェル変数 bleopt_openat_base に値を指定します。 この設定は ble.sh の動作の為に使用する内部のファイルディスクリプターの番号の起点を指定します。 この変数に設定された値を最初の内部ファイルディスクリプターとし、 以降1ずつ増やした値を内部ファイルディスクリプターとして使用します。 既定値 30 及び 31, 32 などを別の目的で使用したい場合に、この変数に他の用途と被らない領域の値を設定して下さい。

8.4 ble.sh における制限

ble.sh では既存の .inputrc や組み込みコマンド bind によるユーザ設定を上書きします。 ble.sh はロード時に .inputrc を読み取り、 また組み込みコマンド bind を関数で上書きする事によってユーザ設定を ble-bind 設定に翻訳しますが、 ble.shsource する前の組み込みコマンド bind による設定は現在では反映されません。 .inputrc では ble.sh だけに適用する設定を以下の様に記述できます。

# inputrc

$if Blesh

# ble.sh 使用時の設定

$endif

ble.sh では内部的に以下の trap を使用しています。 ble-0.4 以降では trap コマンドを上書きする事により、 ユーザ側でこれらを意識することなく trap を設定することができるようになりました。 但し builtin trap の代わりに trap または ble/builtin/trap を使ってユーザ設定を行う必要があります。

# ble-0.4
builtin trap -- 'blehook/invoke EXIT' EXIT
builtin trap -- 'blehook/invoke INT' SIGINT
builtin trap -- 'ble-edit/attach/TRAPWINCH' SIGWINCH
builtin trap -- 'ble-edit/exec:gexec/.TRAPDEBUG "$*" || { (($?==2)) && return 0 || break; } &>/dev/null' DEBUG

# ble-0.3
builtin trap -- 'ble-edit/exec:gexec/.eval-TRAPINT' INT
builtin trap -- 'ble/base/unload' EXIT
builtin trap -- 'ble-edit/attach/TRAPWINCH' WINCH

# Bash 3.2以下
builtin trap -- 'ble-edit/bind/stdout/TRAPUSR1' USR1

# 現在未使用
# builtin trap -- 'ble-edit/bind/.exit-TRAPRTMAX' RTMAX

ble.sh では bleopt_openat_base で指定した番号以降の(数個の)ファイルディスクリプタを内部で使用します。 これらのファイルディスクリプタを exec を用いてユーザ側で変更しないで下さい。

ble.sh では以下の組み込みコマンド・予約語を関数またはエイリアスで上書きする事を禁止しています。 ユーザの入力したコマンドによって上書きされてもその上書きは解除されます。

  • 組み込みコマンド: builtin enable unalias return break continue declare typeset local eval :
  • 予約語: if then elif else case esac while until for select do done { } [[ function

ble.sh は組み込みコマンド unset を内部で builtin unset を明示的に呼び出す読み取り専用の関数で上書きします。ユーザはこの関数を上書きできません。


[ 日本語 | English ] ≫ 説明書 [§1 基本 | §2 描画 | §3 束縛 | §4 編集 | §5 Emacs | §6 Vim | §7 補完 | §8 他]