退出python脚本时在bash中创建别名
我已经用python编写了一个shell(使用cmd模块),当使用这个shell时,关于运行ect命令的某些信息。输出到文本文件。我想编写一段代码,创建一个别名来查看bash shell中的文本文件(例如,我执行了以下命令):退出python脚本时在bash中创建别名,python,bash,alias,Python,Bash,Alias,我已经用python编写了一个shell(使用cmd模块),当使用这个shell时,关于运行ect命令的某些信息。输出到文本文件。我想编写一段代码,创建一个别名来查看bash shell中的文本文件(例如,我执行了以下命令): alias latest.trc='less 我目前最大的努力是: x="alias %s = 'less %s'" % (<alias name>, <path>) y=shlex.split(x) atexit.register(subproc
alias latest.trc='less
我目前最大的努力是:
x="alias %s = 'less %s'" % (<alias name>, <path>)
y=shlex.split(x)
atexit.register(subprocess.call, y)
我输入的路径当然是有效的,如果我直接从命令行运行x,它就会工作
非常感谢您对我的代码出现错误的原因或实现相同效果的更好方法的任何帮助。您会遇到错误,因为
alias
是bash
命令,而不是可执行文件。您必须在shell中运行子进程。调用:
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)
但是,考虑到子流程生成新流程的事实,对其运行的环境所做的任何更改都会在退出时丢失
您最好创建一个文件,在其中放置所有这些别名,并在需要使用它们时手动获取它们的源代码
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)