【发布时间】:2016-07-06 17:31:15
【问题描述】:
问题
我有一个 Python 脚本,当我从命令行运行它时,我不想在 .bash_history 中记录任何内容。
原因是脚本使用了 Python argparse 库,它允许我直接从命令行将参数传递给 Python 代码。
例如,我可以编写脚本,使其在脚本中使用“123456”作为值:
$ ./scriptname.py -n 123456
问题是我不希望将值 123456 存储在 .bash_history 中。事实上,我宁愿整个命令一开始就不要存储到 .bash_history 文件中。
我的尝试
- 子进程和历史 -c
我已将子进程库添加到我的脚本顶部,然后在尝试主动清除我正在使用的 shell 的当前历史记录之后直接包含它:
subprocess.call("history -c", shell=True)
理论上,这应该清除当前 shell 的历史记录。我没有从中看到错误,所以我假设它在其他一些 shell 中运行。当我在脚本之外运行它时(直接在运行命令来调用脚本之后)它可以正常工作。
- 子进程和取消设置 HISTFILE
我也使用了以下子进程但没有成功:
subprocess.call("unset HISTFILE", shell=True)
- os.system & 历史 -c
我还使用了 Python 的 os 库,并在脚本中包含以下内容:
os.system("history -c")
- os.system 并取消设置 HISTFILE
我也尝试使用 os.system 取消设置 HISTFILE 无济于事。
os.system("unset HISTFILE")
首选解决方案特征
我意识到我可以在使用命令后简单地输入 unset HISTFILE 或 history -c。但我希望这尽可能是一个独立的脚本。
理想情况下,该解决方案会阻止 ./scomescript.py 命令被记录在 .bash_history 中。
我需要这个脚本根据输入将文本输出到终端,因此我也不能立即关闭终端。
我想必须有一种方法可以从 python 脚本本身执行此操作 - 这是我的偏好。
【问题讨论】:
-
我在某处听说如果在 bash 命令前加一个空格,它将不会被保存。这对我不起作用,但这是我所听到的。
-
感谢 zondo,不幸的是我认为这需要一个特殊的环境变量设置。见:stackoverflow.com/questions/8473121/…
-
好吧,感谢您澄清这一点。很遗憾,真正提出问题的人没有得到答案,但我是;/
-
这是因为参数是秘密,例如密码吗?
标签: python linux macos bash shell