ターミナルセッションをtypescriptとして記録する「script」コマンドがすでに実行されているかどうかはどうすればわかりますか?

ターミナルセッションをtypescriptとして記録する「script」コマンドがすでに実行されているかどうかはどうすればわかりますか?

これだから答えは実行するコマンドの環境にscript変数が追加されたことを示します。SCRIPT試してみましたが、今はうまくいかないようです。

私が試したことは次のとおりです。

ma08@IWeighHar:~/pro$ script foo.log
Script started, output log file is 'foo.log'.
ma08@IWeighHar:~/pro$ echo $SCRIPT

ma08@IWeighHar:~/pro$ exit
exit
Script done.
ma08@IWeighHar:~/pro$ echo $SCRIPT

ma07@IWeighHar:~/pro$ 

script現在の端末セッションでコマンドが実行されたかどうかを検出する方法は?

このコマンドの名前のため、インターネット検索は悪夢です。

ベストアンサー1

script経験的に、端末デバイスにその名前の開いているプロセスがあることを確認できます。

if lsof -watc script "$(tty)" > /dev/null 2>&1; then
  echo I may very well be within a script session
fi

tty標準入力で開いた端末のパスを返します。一部のシェルは、$TTY制御端末のパスに変数を設定します。$(ps -o tty= -p "$$")プレフィックスのない制御端末の取得も参照してください/dev/

おすすめ記事