[英]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.