好吧,我正在尝试使用 python3 脚本来管理我的 MAC OS X 上的别名。起初我将所有别名命令放在一个文件中,并尝试使用下面的代码来打开/关闭这些别名:
def enable_alias(self):
alias_controller = AliasListControl() # just a simple class to handle the single file path and other unimportant things.
os.popen('cp ~/.bash_aliases ~/.bash_aliases.bak')
os.popen('cat ' + alias_controller.path + '>> ~/.bash_aliases')
os.system('source ~/.bash_aliases')
def disable_alias(self):
os.popen('mv ~/.bash_aliases.bak ~/.bash_aliases')
os.popen('source ~/.bash_aliases')# maybe I should call some other unalias commands there
如您所见,存在问题。当脚本运行到os.system('source ~/.bash_aliases')
时,会先打开一个子shell并执行命令,所以源码操作只会在子shell中生效,不会在父shell中生效,然后命令结束,子shell被关闭。这意味着os.system('source ~/.bash_aliases')
所做的一切都是顺理成章的。