shell 如何在python脚本中扩展bash别名

atmip9wb  于 2023-05-29  发布在  Shell
关注(0)|答案(1)|浏览(147)

需要在python脚本中扩展bash别名。尝试了许多方法来读取值,但无法获得它。
1.检查命令是否是bash别名,返回扩展形式
1.如果命令不是bash alias,则返回命令本身。
Shell脚本可以通过以下方式实现:

alias testalias='aliascommand'
cmd="testalias"
shopt -s expand_aliases
newcmd=${BASH_ALIASES[$cmd]}
echo "$newcmd"
kqqjbcuj

kqqjbcuj1#

在启动Python之前,你可以在shell**的帮助下做到这一点:

for alias_name in "${!BASH_ALIASES[@]}"; do
  printf -v "alias__${alias_name}" %s "${BASH_ALIASES[$alias_name]}" \
  && export "alias__${alias_name}"
done

...之后,os.environ.get(f'alias__{name}', None)将返回任何存在的别名,因此您可以将该文本添加到您打算运行的shell命令中,以获得别名本身具有的相同行为。
但是,对于一般情况,应该使用导出函数而不是别名;使用subprocess.Popen('...script goes here...', shell=True, executable=shutil.which('bash'))将确保所讨论的脚本是用bash执行的,因此可以访问在父进程中运行的bash副本导出的任何函数。

相关问题