このSO質問の受け入れられた回答によると、 Pythonはbashの優れた置き換えを行うことができます 。
私の質問はこれです:シームレスなスイッチを作るにはどうすればいいですか?そのようなスイッチを作るために整理する主なことは、仮想端末を起動するときに、Bourne Shellのようなものではなく、いくつかのPython Shell(what?))を呼び出すことだと思います。
それは理にかなっていますか?はいの場合、どうすればそれを実行できますか?この一般的なシェルのWikipedia比較では、単一のリストは表示されませんPythonシェル: コマンドシェルの比較
そのスレッドとその受け入れられた答えは、特に、Python for Shellscriptingをinteractiveシェル。
別の言語でスクリプトを書くには、たとえば#!/usr/bin/env python
の代わりに #!/bin/bash
スクリプトの上部にあります。
別のインタラクティブシェルを試してみたい場合は、実行してください。既存のシェルプロンプトでipython
と入力します。そのシェルを採用することに決めた場合は、セッションの開始時にShell
環境変数を設定します(~/.profile
ほとんどの環境、または~/.pam_environment
)、例えばexport Shell=/usr/bin/ipython
(.profile
構文)またはShell="/usr/bin/ipython"
(.pam_environment
構文)。
PerlやPythonなどの高度な言語に基づいて私が見たシェルはどれも、私の意見ではインタラクティブな使用には十分ではありません。一般的なタスク、特に一般的なジョブには冗長すぎますアプリケーションを起動するシェルの私 4年前に同様のトピックについて書いた ;それ以来、状況は根本的に改善されていないと思います。
私はこの質問がかなり古いことを知っていますが、Python 3のスーパーセットに基づく新しいシェルがあり、これはあなたが探しているものかもしれません。
ウェブサイトから:
Xonshは、Python風でBASHwardsに見えるシェル言語であり、コマンドプロンプトです。この言語は、Python 3.4+のスーパーセットであり、BashやIPythonで使用されている追加のシェルプリミティブが含まれています。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」ライブラリも確認してください。