[英]Create an alias in bash when exiting a python script
我已经在python中编写了一个shell(使用cmd模块),使用此shell时,有关命令的某些信息会运行ect。 输出到文本文件。 我想写一段代码来创建别名以查看bash shell中的文本文件(例如,就像我执行了以下命令一样): alias latest.trc='less <path to file>
我目前的最大努力是:
x="alias %s = 'less %s'" % (<alias name>, <path>)
y=shlex.split(x)
atexit.register(subprocess.call, y)
这可以在退出时执行一些命令,例如,如果x =“ echo'bye'”,但出现错误
OSError: [Errno 2] No such file or directory
我输入的路径当然是有效的,并且如果我直接从命令行运行x,它将起作用。
我们将不胜感激我的代码为什么会出现错误,或者有更好的方法来达到相同的效果。
由于alias
是bash
命令而不是可执行文件,因此会出现错误。 您必须在shell
运行subprocess.call
:
import subprocess
import atexit
import shlex
x="alias %s = 'less %s'" % ('a', 'whatever')
y=shlex.split(x)
atexit.register(lambda args: subprocess.call(args, shell=True), y)
但是,鉴于子流程产生了一个新流程,因此对它所运行的环境所做的任何更改都会在退出时丢失。
您最好创建一个文件,在其中放置所有这些别名,并在需要使用它们时手动提供它们。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.