簡體   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