-
-
Notifications
You must be signed in to change notification settings - Fork 86
説明書 §8 その他
[ 日本語 | English ] ≫ 説明書 [§1 基本 | §2 描画 | §3 束縛 | §4 編集 | §5 Emacs | §6 Vim | §7 補完 | §8 他 | 索引]
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.1.3 シェル変数 BLE_VER
(v0.4)†
現在ロードされている ble.sh
のバージョンを一つの整数で表したものです。
値は ((BLE_VERSINFO[0] * 10000 + BLE_VERSINFO[1] * 100 + BLE_VERSINFO[2]))
によって計算されます。
8.1.4 シェル変数 BLE_ONLOAD
(配列) (v0.4)†
ble.sh
がロードされた時に実行するコマンドを指定する配列です。
他のシェルプラグインが、自身よりも後に ble.sh
がロードされた時に追加の初期化を実行する為に使うことができます。
8.1.5 シェル変数 BLE_ATTACHED
(v0.4)†
現在 ble.sh
がセッションにアタッチしているかどうかを表す変数です。
アタッチしている時は非空文字列が設定されます。
アタッチしていない時は空文字列が設定されます。
8.1.6 シェル変数 BLE_SESSION_ID
(環境変数) (v0.4)†
現在のセッションを特定する ID を保持します。ID は (Unix時間によるセッション開始時刻)/(Bash のプロセスID)
の形をしています。
8.1.7 シェル変数 BLE_COMMAND_ID
(v0.4)†
現在のユーザーコマンドの番号を保持します。
8.1.8 シェル変数 BLE_PIPESTATUS
(v0.4)†
前回のユーザーコマンドの PIPESTATUS
の値を保持します。
8.2.1 関数 ble-import
†
ble-import [-dfq|--delay|--force|--query] [--] [SCRIPTFILE...]
ファイル SCRIPTFILE
を既定の場所から検索し、読み込み済みでなければ source
します。
オプション -d
または --delay
を指定した時、可能であれば遅延読み込みを行います。
指定されたファイルの内一つ以上が見つからない時、キャンセルされどのファイルも読み込まれません。
ただしオプション -f
または --force
が指定されている時、存在しないファイルはエラーメッセージもなく単に無視され、存在するファイルだけが読み込まれます。
ファイルの指定なくオプション -q
または --query
が指定された時、既に読み込まれたファイルの一覧を出力します。
一つ以上のファイルと共にオプション -q
または --query
が指定された時、指定されたファイルが全て読み込み済みか検査し結果を終了ステータスで返します:
一つ以上のファイルが見つからない時に 127、一つ以上のファイルが未だ読み込まれていない時に 1、それ以外の時に 0 を返します。
8.2.2 設定変数 import_path
(コロン区切りディレクトリ名) (v0.4)†
# 既定値
bleopt import_path="${XDG_DATA_HOME:-$HOME/.local/share}/blesh/local"
コロン区切りで ble-import
のカスタム検索パスを設定します。
8.2.3 関数 ble-autoload
†
指定した関数 FUNCTION
の遅延ロードを設定します。
関数 FUNCTION
が初回に呼び出された時に SCRIPTFILE
を ble-import
します。
SCRIPTFILE
には FUNCTION
の定義が含まれている必要があります。
ble-autoload SCRIPTFILE FUNCTION...
8.2.4 関数 ble-stackdump
†
デバグ用の関数です。現在のシェル関数のコールスタックの情報を出力します。
shopt -s extdebug
が設定されている時、各関数呼び出しに使用された引数も出力します。
ble-stackdump MESSAGE
8.2.5 関数 ble-assert
†
デバグ用の関数です。COMMAND
を eval
によって評価し、失敗した場合にはメッセージ MESSAGE
と共にコールスタックの情報を出力します。
ble-assert COMMAND [MESSAGE]
8.2.6 関数 ble-append-line
†
この関数はコマンドラインから呼び出して次のコマンドラインに文字列を追加するのに使います。 この関数はサブシェル内部からも呼び出すことができます。
ble-append-line STRING
# 例1
$ ble-append-line 'echo hello world'
$ echo hello world # <-- 上で指定した引数がコマンドラインに自動挿入されます
# 例2
$ echo echo hello | ble-append-line $(cat)
$ echo hello
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_exec_int_trace
(空/非空) (v0.4)†
# 既定値
bleopt internal_exec_int_trace=
非空文字列が設定されている時、シェル関数の実行が SIGINT
で中断された時に、
DEBUG
トラップによる SIGINT
の処理経過を逐次、標準エラー出力に出力します。
8.3.3 設定変数 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.4 設定変数 internal_suppress_bash_output
(空/非空)†
# 既定値
bleopt internal_suppress_bash_output=1 # ble-0.3以降
bleopt suppress_bash_output=1 # ble-0.2以前
# bashrc
source ble.sh -o internal_suppress_bash_output=1 # ble-0.4以降
source ble.sh --debug-bash-output # ble-0.4以降 (無効化)
非空文字列が設定されている時、Bash の本来の標準出力・標準エラー出力を端末に出力しません。
空文字列が設定されている時、Bash 本来の出力を端末に繋いだまま ble.sh
による編集を実現します。
Bash 本来の出力を抑制しない設定は、ちらつきの問題がある為に現在はデバグ用に残されているのみでテストされていません。
通常は非空文字列を設定して、Bash の本来の出力は明示的に抑制するようにして下さい。
8.3.5 設定変数 internal_stackdump_enabled
(算術式) (v0.2)†
# 既定値
bleopt internal_stackdump_enabled=0 # ble-0.3以降
bleopt stackdump_enabled=0 # ble-0.2
ble.sh
で予期しない状態を検知した時に、関数呼び出し履歴を画面に出力するかどうかを制御します。
非零の値を返した時に関数呼び出し履歴が画面に出力されます。
8.3.6 設定変数 history_lazyload
(空/非空)†
# 既定値
bleopt history_lazyload=1
非空文字列が設定されている時、履歴の遅延読み込みが有効になります。既定で有効です。
空文字列が設定されている時は、ble-attach
時に履歴の読み込みを完了してからユーザ入力を受け付けるようになります。
8.3.7 設定変数 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.8 設定変数 openat_base
(整数)†
# 既定値
bleopt_openat_base=30
# bashrc
source ble.sh -o openat_base=50 # ble-0.4以降
この設定変数は ble.sh
を source
する前に設定しておく必要があります。
従って、bleopt
コマンドは使用せず、直接シェル変数 bleopt_openat_base
に値を指定します。
この設定は ble.sh
の動作の為に Bash 4.0 以下で内部使用するファイルディスクリプターの番号の起点を指定します。
この変数に設定された値を最初の内部ファイルディスクリプターとし、
以降1ずつ増やした値を内部ファイルディスクリプターとして使用します。
既定値 30 及び 31, 32 などを別の目的で使用したい場合に、この変数に他の用途と被らない領域の値を設定して下さい。
8.3.9 設定変数 connect_tty
(空/非空/列挙) (v0.4)†
# 既定値
bleopt connect_tty=1
非空文字列が設定されている時、子 Bash 対話セッションの ble.sh
は、
開始時の標準入出力が TTY に繋がっていなかったとしても現在の制御端末 /dev/tty
に接続して
行編集ユーザーインターフェイスを提供します。
この場合でも、ユーザーコマンドの標準入出力は開始時の標準入出力になります。
値として inherit
が設定されている時、子 ble.sh
セッションが TTY を見つけられない時の為に、追加で TTY をエクスポートします。
但し、この設定では、セッション内でバックグランドプロセスが開始された時に、センション終了後も端末のウィンドウが自動で閉じない可能性があります。
この設定は現在のセッションの振る舞いには影響を与えません。
8.3.10 設定変数 syntax_debug
(空/非空)†
# 既定値
bleopt syntax_debug=
この設定変数に非空文字列が設定されている時、内部の構文解析情報及び構文木を表示します。
release
バージョンでは無視されます。
8.3.11 設定変数 debug_xtrace
(空/ファイル名) (v0.4)†
# 既定値
bleopt debug_xtrace=
この設定変数にファイル名が指定されている時、
ble.sh
内部の処理に対する xtrace (set -x) ログを指定したファイル名に書き込みます。
8.3.12 設定変数 debug_xtrace_ps4
(プロンプト文字列) (v0.4)†
# 既定値
bleopt debug_xtrace_ps4='+ '
この設定は bleopt debug_xtrace
による xtrace
で使用する PS4
の値を指定します。
8.3.13 設定変数 debug_idle
(空/非空) (v0.4)†
# 既定値
bleopt debug_idle=
非空文字列が指定されている時、現在実行中のバックグラウンドタスクを info パネルに表示します。
8.3.14 設定変数 debug_profiler_opts
(コロン区切りリスト) (v0.4)†
# 既定値
bleopt debug_profiler_opts=line:func
ble/debug/profiler#start
& ble/debug/profiler#end
の振る舞いを制御するためのオプションです。
line
及び func
が含まれているとき、それぞれにソース行及び関数呼び出しの統計を収集します。
tree
が含まれている時、関数呼び出しツリーが記録されます。
追加のパラメータとして line
及び func
に html
を指定することができます (例: line=html
)。
その場合、統計が .html
にも出力されます。
8.3.15 設定変数 debug_profiler_tree_threshold
(数値) (v0.4)†
# 既定値
bleopt debug_profiler_tree_threshold=5.0
bleopt debug_profiler_opts=tree
で記録される関数呼び出しツリーにそれぞれのコマンドを含めるかどうかを決める閾値をミリ秒単位で指定します。
この閾値よりも短い時間しかかからなかったコマンドは記録されません。
8.4 ble.sh
における制限†
ble.sh
では既存の .inputrc
や組み込みコマンド bind
によるユーザ設定を上書きします。
ble.sh
はロード時に .inputrc
を読み取り、
また組み込みコマンド bind
を関数で上書きする事によってユーザ設定を ble-bind
設定に翻訳しますが、
ble.sh
を source
する前の組み込みコマンド 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 -- 'ble/builtin/trap/.handler 0 "$BASH_COMMAND" "$@"; builtin eval -- "${_ble_builtin_trap_postproc[0]}" \# "${_ble_builtin_trap_lastarg[0]}"' EXIT
builtin trap -- 'ble/builtin/trap/.handler 2 "$BASH_COMMAND" "$@"; builtin eval -- "${_ble_builtin_trap_postproc[2]}" \# "${_ble_builtin_trap_lastarg[2]}"' INT
builtin trap -- 'ble/builtin/trap/.handler 28 "$BASH_COMMAND" "$@"; builtin eval -- "${_ble_builtin_trap_postproc[28]}" \# "${_ble_builtin_trap_lastarg[28]}"' WINCH
builtin trap -- 'ble/builtin/trap/.handler 1000 "$BASH_COMMAND" "$@"; builtin eval -- "${_ble_builtin_trap_postproc[1000]}" \# "${_ble_builtin_trap_lastarg[1000]}"' DEBUG
# Bash 3.2以下
builtin trap -- 'ble/builtin/trap/.handler 10 "$BASH_COMMAND" "$@"; builtin eval -- "${_ble_builtin_trap_postproc[10]}" \# "${_ble_builtin_trap_lastarg[10]}"' USR1
# 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 他 | 索引]