- 書式
- status [OPTION]
概要
status
コマンドは引数を付けないと、
- ログインシェルかどうか
- ジョブコントロールの状態
を表示します。
以下のオプションがあります。
-c
/--is-command-substitution
- fishが コマンド置換 を実行中のときに正常終了。
-b
/--is-block
- fishがコードブロックを実行中のときに正常終了。
-i
/--is-interactive
- 対話モードの(キーボードと接続されている)ときに正常終了。
-l
/--is-login
- ログインシェルのときに正常終了。
つまり、PATH
の設定などログインタスクを実行するとき。 --is-full-job-control
- 全ジョブコントロールが有効のときに正常終了。
--is-interactive-job-control
- 対話的ジョブコントロールが有効のときに正常終了。
--is-no-job-control
- ジョブコントロールが無効のときに正常終了。
-f
/--current-filename
- 現在実行中のスクリプトファイル名を表示。
-n
/--current-line-number
- 現在実行中のスクリプトの行番号を表示。
-j CONTROLTYPE
/--job-control=CONTROLTYPE
- 以下のジョブコントロールのタイプを設定。
- none
- full
- interactive
- none
-t
/--print-stack-trace
- コールスタック上の全関数呼び出しのスタックトレースを表示。
実行例
以下のスクリプトを実行します。
#!/usr/bin/fish echo status status echo echo -c / --is-command-substitution echo -n コマンド置換外; status -c; echo $status # 1 echo -n コマンド置換内 (status -c); echo $status # 0 echo echo -b / --is-block echo -n ブロック外; status -c; echo $status # 1 begin; echo -n ブロック内 (status -b); echo $status; end # 0 echo echo -i / --is-interactive echo -n 対話モード (status -i); echo $status # 0 echo -n 対話モードではない; status -i; echo $status # 1 echo echo -l / --is-login echo -n ログインシェル (status -l); echo $status # 0 echo -n ログインシェルではない; status -l; echo $status # 1 echo echo --is-full-job-control echo -n ジョブコントロールが有効 (status --is-full-job-control); echo $status # 0 echo -n ジョブコントロールが有効ではない; status --is-full-job-control; echo $status # 1 echo echo --is-interactive-job-control / --is-login echo -n 対話的ジョブコントロールが有効ではない; status --is-interactive-job-control; echo $status # 0 echo echo --is-no-job-control / --is-login echo -n 全ジョブコントロールが有効ではない (status --is-no-job-control); echo $status # 0 echo -n 全ジョブコントロールが有効; status --is-no-job-control; echo $status # 1 echo echo "-f / --current-filename (現在実行中のスクリプトのファイル名)" status -f echo echo "-n / --current-line-number (現在実行中のスクリプトの行番号)" status -n # 45 echo echo -t コールスタック上の全関数呼び出しのスタックトレースを表示 function foo bar # 50行目 end function bar status -t end foo # fooがbarを呼び出す(55行目)
実行結果です。
status This is not a login shell Job control: Only on interactive jobs -c / --is-command-substitution コマンド置換外1 コマンド置換内0 -b / --is-block ブロック外1 ブロック内0 -i / --is-interactive 対話モード0 対話モードではない1 -l / --is-login ログインシェル0 ログインシェルではない1 --is-full-job-control ジョブコントロールが有効0 ジョブコントロールが有効ではない1 --is-interactive-job-control / --is-login 対話的ジョブコントロールが有効ではない0 --is-no-job-control / --is-login 全ジョブコントロールが有効ではない0 全ジョブコントロールが有効1 -f / --current-filename (現在実行中のスクリプトのファイル名) qr_20363Oqq.fish -n / --current-line-number (現在実行中のスクリプトの行番号) 45 -t コールスタック上の全関数呼び出しのスタックトレースを表示 in function 'bar' called on line 50 of file qr_20363Oqq.fish in function 'foo' called on line 55 of file qr_20363Oqq.fish
最後までお読みいただき、ありがとうございました。参考になれば嬉しいです。