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 脚本,它就会循环。
先感谢您。
新的终端窗口是启动新的交互式 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)