.bashrc 文件正在循环“脚本”命令

kro*_*omy 3 bash shell autostart

我正在尝试使用 linux 命令“script”设置一个小 shell 脚本来记录我的 Kali Linux 机器上的每个输入。

#!/bin/bash
now=$(date +"%m_%d_%Y_%H:%M:%S")
script /root/Logs/log_$now.txt
Run Code Online (Sandbox Code Playgroud)

该脚本本身似乎可以工作,但我想将其添加到 bash 自动启动中,因此每当我打开终端时,我的 shellscript 就会被执行。

我尝试将其添加到我的 .bashrc 文件中,但是当我现在打开终端时,脚本会循环。我添加了一个简单的“echo 'test'”脚本,它仅在终端启动时启动一次。将脚本添加到我的 .profile 文件并手动执行 .profile 按预期工作,但是一旦我使用“script”命令输入我的 .bashrc 脚本,它就会循环。

先感谢您。

che*_*ner 5

新的终端窗口是启动新的交互式 shell 的一种方式,运行script. 您只想script在第一种情况下运行,而不是在每种情况下都运行。

script它本身在环境中设置一个变量,让您知道您是否已经在由 启动的 shell 中script。在尝试再次运行之前检查该变量script

if [[ -z $SCRIPT ]]; then
    now=$(date +"%m_%d_%Y_%H:%M:%S")
    script /root/Logs/log_$now.txt
fi
Run Code Online (Sandbox Code Playgroud)

如果设置的话,的值SCRIPT是正在记录的文件的名称。

或者,您可以将终端模拟器配置为script直接运行,而不是让它继续打开普通的交互式 shell,然后您尝试更改配置。


以上适用于 BSD script;对于 GNU script,您必须自己设置这样的变量。

if [[ -z $SCRIPT ]]; then
  now=$(date +"%m_%d_%Y_%H:%M:%S")
  export SCRIPT=/root/Logs/log_$now.txt
  script "$SCRIPT"
fi
Run Code Online (Sandbox Code Playgroud)