書式
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
-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

最後までお読みいただき、ありがとうございました。参考になれば嬉しいです。