例如
$ pwd
/home/my_name
可以识别或不识别该命令是由人输入还是由脚本运行。
答案1
不。
脚本或 shell 函数可以检查$-
并查找 an i
(这表明这是一个交互式 shell),或者它可以查找控制 tty (例如tty
),但是这些都不是万无一失的方法。
即使您root
记录了用户 shell 会话中所有执行的命令,或者查看了他们的 shell 历史文件,您仍然无法判断您看到的命令是由该用户主动键入的还是插入到命令行中的(或进入日志)通过脚本或通过其他方式。
答案2
虽然确实没有防傻(或伪造)的方法(至少我不知道),但从技术上讲,您可以通过以下方式检查差异:
root@aw [~]# set > cons
root@aw [~]# cat ./test.sh
#!/bin/bash
set > scri
root@aw [~]# ./test.sh
然后
root@aw [~]# diff cons scri
有很多区别,选择你喜欢的。