繁体   English   中英

退出python脚本时在bash中创建别名

[英]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,它将起作用。

我们将不胜感激我的代码为什么会出现错误,或者有更好的方法来达到相同的效果。

由于aliasbash命令而不是可执行文件,因此会出现错误。 您必须在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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM