linux - (Ubuntu) Linux : Is it possible to find out if you're running inside §script§ command?

标签 linux bash shell ubuntu scripting

~/.bashrc 在登录时不断创建 script session 时出现这种情况,除非被 CTRL+C 退出,所以我认为特定命令必须有一个 if 检查我们是否已经在运行 script session ,这样它就不会无限期地创建新的 session 。

最佳答案

如果你打算做类似的事情

exec script "session.$(date)"

...在可以递归的情况下,先设置一个环境变量,没有设置才继续:

[[ $- != *i* ]] && [[ -z $SCRIPT_RUNNING ]] && {
  export SCRIPT_RUNNING=1
  exec script "session.$(date)"
}

...$- 测试在非交互式 shell 上跳过了这个; SCRIPT_RUNNING 测试在先前由父进程设置时会跳过它。

就是说——如果您出于任何类型的安全目的而这样做,那是完全不合适的。从.bashrc 启动script 意味着记录用户操作的进程由该用户拥有和控制……利益冲突,很多吗?这也意味着以命令行参数启动的交互式 shell 将被一个没有命令行参数的 shell 取代,这可能会破坏软件做有趣的事情。

关于linux - (Ubuntu) Linux : Is it possible to find out if you're running inside §script§ command?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25743847/

相关文章:

linux - 用另一个字符替换字符串中包含特殊字符的子字符串

linux - 在内核 makefile 的函数中添加注释

python - Bash 命令不会在 Jupyter Notebook 中执行

bash - 在 Bash 脚本中,如果出现某种情况,如何退出整个脚本?

linux - 从 shell 脚本启动 pdf 文件

c++ - 一段时间后 CPU 使用率高

Linux shell : unexpected EOF while looking for matching `"'

bash - 如果不是Bash,则使用语法

linux - Bash shell - 按时间顺序统计并显示目录和子目录列表

linux - 需要使用批处理文件或脚本从 Windows 计算机创建 Linux 用户。我可以通过 ssh 访问服务器。