根据对此SO问题的公认答案:,Python可以替代bash。
那么我的问题是:我该如何进行无缝切换?我认为要进行这样的切换的主要事情是:启动虚拟终端时,调用一些Python Shell(虽然?),而不是像Bourne Shell这样的东西。
那有意义吗?如果是,我该怎么做?Wikipedia对常见shell的比较未列出单个Python shell:命令shell的比较
根据对此SO问题的公认答案:,Python可以替代bash。
那么我的问题是:我该如何进行无缝切换?我认为要进行这样的切换的主要事情是:启动虚拟终端时,调用一些Python Shell(虽然?),而不是像Bourne Shell这样的东西。
那有意义吗?如果是,我该怎么做?Wikipedia对常见shell的比较未列出单个Python shell:命令shell的比较
Answers:
该线程及其公认的答案特别是关于使用Python进行shell 脚本编写,而不是作为交互式 shell。
要用其他语言编写脚本,请在脚本顶部放置例如#!/usr/bin/env python
而不是#!/bin/bash
。
如果您想尝试其他交互式shell,请运行它,例如ipython
,在现有的shell提示符下键入。如果您决定采用该shell,请SHELL
在会话开始时(~/.profile
在大多数环境中或中~/.pam_environment
)设置环境变量,例如export SHELL=/usr/bin/ipython
(.profile
语法)或SHELL="/usr/bin/ipython"
(.pam_environment
语法)。
我认为,基于Perl或Python等高级语言的shell尚不足以用于交互式使用。对于常见任务,它们太冗长了,特别是启动应用程序的Shell的常见工作。我4年前写过一个类似的话题 ; 从那以后,我认为情况没有根本改善。
我知道这个问题现在已经很老了,但是有一个新的基于Python 3超集的shell,称为xonsh,这可能正是您要寻找的。
从网站:
Xonsh是一种类似Python的BASHwards外观的Shell语言和命令提示符。该语言是Python 3.4+的超集,其中包含您习惯于Bash和IPython使用的其他shell原语。它适用于所有主要系统,包括Linux,Mac OSX和Windows。Xonsh是供专家和新手使用的日常工具。
原因是Python不支持处理提升的特权。最坏的情况是编辑系统文件。
比较
sudo sed -i -e "/\#LXC_DOMAIN/ s/\#//" /etc/default/lxc-net
与:
out = subprocess.run('''sudo sed -i -e "/\#LXC_DOMAIN/ s/\#//" /etc/default/lxc-net''', shell=True, stdout=subprocess.PIPE, stderr=subprocess.STDOUT,env={"PATH": "/usr/bin"})
您不能对系统文件使用Python的本机文件处理,因为Python本质上无法执行具有提升特权的子命令。
Ipython没问题。另外,请查看“ os”库。
exec ipython
从当前的shell启动文件中获取文件,例如.bashrc