bash - 尝试始终从终端记录我的命令输出,但脚本命令正在循环
问题描述
所以我试图使用该script
命令来始终记录我的命令的输出(这是为了工作);但是,当我将script
命令放在我的~/.zshrc
文件中时(因为我使用的是 zshell),它似乎在我打开 zsh 时不断运行。
所以这是我的~/.zshrc
文件在底部的样子:
LOGDATE=$(date +"%m_%d_%Y_%H_%M_%S_%p.tlog")
script $LOGDATE
然后当我打开一个新终端时,这就是我得到的:
Script started, file is 01_16_2019_07_15_05_AM.tlog
Script started, file is 01_16_2019_07_15_05_AM.tlog
Script started, file is 01_16_2019_07_15_05_AM.tlog
Script started, file is 01_16_2019_07_15_05_AM.tlog
Script started, file is 01_16_2019_07_15_05_AM.tlog
Script started, file is 01_16_2019_07_15_06_AM.tlog
Script started, file is 01_16_2019_07_15_06_AM.tlog
Script started, file is 01_16_2019_07_15_06_AM.tlog
Script started, file is 01_16_2019_07_15_06_AM.tlog
Script started, file is 01_16_2019_07_15_06_AM.tlog
Script started, file is 01_16_2019_07_15_06_AM.tlog
Script started, file is 01_16_2019_07_15_06_AM.tlog
Script started, file is 01_16_2019_07_15_06_AM.tlog
Script started, file is 01_16_2019_07_15_06_AM.tlog
Script started, file is 01_16_2019_07_15_06_AM.tlog
Script started, file is 01_16_2019_07_15_06_AM.tlog
Script started, file is 01_16_2019_07_15_06_AM.tlog
Script started, file is 01_16_2019_07_15_06_AM.tlog
Script started, file is 01_16_2019_07_15_07_AM.tlog
Script started, file is 01_16_2019_07_15_07_AM.tlog
Script started, file is 01_16_2019_07_15_07_AM.tlog
Script started, file is 01_16_2019_07_15_07_AM.tlog
Script started, file is 01_16_2019_07_15_07_AM.tlog
Script started, file is 01_16_2019_07_15_07_AM.tlog
Script started, file is 01_16_2019_07_15_07_AM.tlog
Script started, file is 01_16_2019_07_15_07_AM.tlog
Script started, file is 01_16_2019_07_15_07_AM.tlog
Script started, file is 01_16_2019_07_15_07_AM.tlog
Script started, file is 01_16_2019_07_15_07_AM.tlog
Script started, file is 01_16_2019_07_15_07_AM.tlog
Script started, file is 01_16_2019_07_15_07_AM.tlog
Script started, file is 01_16_2019_07_15_08_AM.tlog
Script started, file is 01_16_2019_07_15_08_AM.tlog
Script started, file is 01_16_2019_07_15_08_AM.tlog
Script started, file is 01_16_2019_07_15_08_AM.tlog
Script started, file is 01_16_2019_07_15_08_AM.tlog
Script started, file is 01_16_2019_07_15_08_AM.tlog
Script started, file is 01_16_2019_07_15_08_AM.tlog
Script started, file is 01_16_2019_07_15_08_AM.tlog
Script started, file is 01_16_2019_07_15_08_AM.tlog
Script started, file is 01_16_2019_07_15_08_AM.tlog
Script started, file is 01_16_2019_07_15_08_AM.tlog
这会一直运行,直到我按住 ctrl-c 阻止它这样做。
我究竟做错了什么?
解决方案
我根本不建议script
在 shell 初始化文件中使用(我们的姊妹站点Unix & Linux Stack Exchange更适合解决关于使用什么的更广泛的问题),但避免狭隘问题的一种方法是使用环境变量作为记录已经发生的标志,如果设置它,请避免启动新会话:
if ! [ -n "$script_log" ]; then
script_log=$(date +"%m_%d_%Y_%H_%M_%S_%p.tlog")
export script_log
script "$script_log"
fi
推荐阅读
- ios - 如何知道 iOS 模拟器上所有应用程序的包标识符
- javascript - 类型“()=> DocumentData”上不存在属性“数据”
- c# - c# wpf - 多线程
- html - 在 Web 开发中实现卡拉 OK 曲目
- gremlin - 通过 gte 或 lte 过滤的 Gremlin python
- ruby - 从静态导轨中获取价值 select_tag
- unity3d - 用于 MIDI 输出的 VR 中的 Unity 乐器
- django - Django:将请求传递给我的 modely.py
- angular - Angular 6 CLI -> 如何使 ng build 项目 + 库
- python - NameError:名称“标题”未定义(为什么“标题”未定义)