【问题标题】:create unix alias using a python3 script使用 python3 脚本创建 unix 别名
【发布时间】:2013-11-25 14:44:05
【问题描述】:

众所周知,在终端 shell 中创建别名非常简单:

ZZ:~ zhangzhao$ alias c='uname'
ZZ:~ zhangzhao$ c
Darwin
ZZ:~ zhangzhao$

但现在我想通过 Python3 脚本做同样的事情。我查看了参考手册,发现这些命令工作可以使用subprocess 模块解决。

然后我写下面的脚本:

import subprocess
subprocess.call(["alias", "c=\'uname\'"])

但是注意这个操作不会对你当前使用的shell生效,而是使用一个子shell然后离开。所以这个脚本所做的一切都是徒劳的。

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

【问题讨论】:

  • 简答:你不能。
  • 如果您使用此别名在您的 python 脚本中进行更多调用,您可以使 python 变量等于您要创建的别名的字符串,然后使用该变量进行调用。否则,我认为不可能使用 python 脚本创建别名,以便您可以在 shell 中使用它
  • 调用Python的shell本身就是另一个shell...
  • 好吧,那我可以把alias c='uname' 放入.bash_aliases。那么我可以在更改.bash_aliases后使用任何方法自动source .bash_aliases吗?
  • 我会把它放到.bashrc中

标签: python bash unix python-3.x command


【解决方案1】:

一般来说,你不能

您设置的所有别名仅适用于当前shell,新别名只能由shell它自己添加,而不是子shell或子进程。

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

【讨论】:

猜你喜欢
  • 2018-08-30
  • 2021-09-19
  • 2014-09-24
  • 2012-10-15
  • 2015-10-13
  • 1970-01-01
  • 2014-11-30
  • 2017-08-09
相关资源
最近更新 更多