gpt4 book ai didi

python - 如何从 python 向 bash 历史记录添加命令

转载 作者:塔克拉玛干 更新时间:2023-11-03 02:03:02 25 4
gpt4 key购买 nike

我正在用 python 编写一个 shell 包装器脚本 ( term-cheat ),可用于查找、收集和执行 shell 命令。我很乐意将执行的命令添加到 shell 历史记录中。我尝试了以下几件事,但没有成功。

subprocess.Popen('history -s "%s"'%command_string, shell=True, executable=os.environ['SHELL'])
os.system('fc -S "%s"'%command_string)

最佳答案

没有跨 shell、普遍可移植的选项:History 是一种交互式工具,没有关于其实现方式的严格 POSIX 规范。

也就是说,需要进行一些修复才能使上述尝试的通用方法既实用又安全:

subprocess.Popen(['bash', '-ic', 'set -o history; history -s "$1"', '_', command_string])
  • HISTFILE 变量仅在交互式 shell 中设置。因此,您需要使用 -i 运行 bash 以完全设置它。
  • set -o history 同样需要打开历史记录
  • 带外传递 command_string 而不是将其代入 -c 之后的参数可避免大量安全漏洞(在其中尝试将一行附加到历史记录可能会执行部分而不是它)。

关于python - 如何从 python 向 bash 历史记录添加命令,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54592827/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com