使用python3脚本创建unix别名

使用python3脚本创建unix别名,python,bash,unix,python-3.x,command,Python,Bash,Unix,Python 3.x,Command,众所周知,在终端外壳中创建别名非常容易: ZZ:~ zhangzhao$ alias c='uname' ZZ:~ zhangzhao$ c Darwin ZZ:~ zhangzhao$ 但是现在我想通过Python3脚本做同样的事情。我查看了ref手册,发现可以使用子流程模块解决此类命令工作 然后我写下下面的脚本: import subprocess subprocess.call(["alias", "c=\'uname\'"]) 但是请注意,此操作不会对您当前使用的shell生效,相反

众所周知,在终端外壳中创建别名非常容易:

ZZ:~ zhangzhao$ alias c='uname'
ZZ:~ zhangzhao$ c
Darwin
ZZ:~ zhangzhao$
但是现在我想通过Python3脚本做同样的事情。我查看了ref手册,发现可以使用
子流程
模块解决此类命令工作

然后我写下下面的脚本:

import subprocess
subprocess.call(["alias", "c=\'uname\'"])
但是请注意,此操作不会对您当前使用的shell生效,相反,它将使用子shell,然后离开。所以这个脚本所做的一切都是徒劳的

所以我的问题是:如何通过执行python脚本在当前使用的shell中创建别名?

通常,您不能

您在中设置的所有别名仅在当前shell中有效,新的aliaes只能由shell自身添加,而不能由子shell或子进程添加

在hack方式中,您可以使用gdb连接父shell并更改其别名表。但在现代Unix中,子进程不允许附加父进程。您需要降低系统安全级别

一般来说,您不能

您在中设置的所有别名仅在当前shell中有效,新的aliaes只能由shell自身添加,而不能由子shell或子进程添加


在hack方式中,您可以使用gdb连接父shell并更改其别名表。但在现代Unix中,子进程不允许附加父进程。您需要降低系统安全级别

简短回答:不行。如果您使用此别名在python脚本中进行更多调用,则可以使python变量等于您要进行的别名的字符串,然后仅使用该变量进行调用。否则,我认为不可能使用python脚本生成别名,这样您就可以在shell中使用它调用python的shell本身就是另一个shell…那么,我可以将
别名c='uname'
放入
中。bash\u别名
。那么,在更改
.bash\u别名后,我可以使用任何方法来自动
source.bash\u别名
?我会将其放入.bashrc中。简短回答:您不能。如果您使用此别名在python脚本中进行更多调用,您可以使python变量等于您要生成的别名字符串,只需使用该变量进行调用。否则,我认为不可能使用python脚本生成别名,这样您就可以在shell中使用它调用python的shell本身就是另一个shell…那么,我可以将
别名c='uname'
放入
中。bash\u别名
。那么,在更改
.bash\u别名
后,我是否可以使用任何方法来自动
源.bash\u别名
?我会将其放入。bashrc@OP:如何附加gdb:您可以将此答案作为示例代码进行检查:@OP:如何附加gdb:您可以将此答案作为示例代码进行检查: