手動で入力したコマンドとスクリプトによって実行されたコマンドの区別

手動で入力したコマンドとスクリプトによって実行されたコマンドの区別

例えば

$ pwd
/home/my_name

コマンドが人によって入力されたのか、スクリプトによって実行されたのかが認識されたり認識されなかったりします。

答え1

いいえ。

スクリプトまたはシェル関数は(対話型シェルであることを示す)を$-確認して検索するか、コントロールtty(たとえば)を見つけることができますが、これは完璧な方法ではありません。itty

ユーザーのシェルセッションで実行されたすべてのコマンドをログに記録したり、そのシェル履歴ファイルを表示したりしてrootも、表示されるコマンドはそのユーザーが直接入力したのか、コマンドラインに挿入したのか(またはログに入力したのか)わかりません。 )スクリプトまたは他の方法で。

答え2

実際には完璧な(または偽)証明方法はありませんが(少なくとも私が知っている限り)、技術的には次のことで違いを確認できます。

root@aw [~]# set > cons
root@aw [~]# cat ./test.sh
#!/bin/bash

set > scri
root@aw [~]# ./test.sh

それから

root@aw [~]# diff cons scri

さまざまな違いがあるので、好きなものを選択してください。

関連情報