bashをPythonに置き換えるにはどうすればよいですか?


13

このSOの質問に対する受け入れられた回答によると、Pythonはすばらしいbashの置き換えを行うことができます。

私の質問は、これです:シームレスなスイッチを作成するにはどうすればよいですか?そのような切り替えを行うために整理すべき主なことは、仮想端末を起動するときに、Bourneシェルのようなものではなく、Pythonシェルを呼び出します(どうですか?)。

それは理にかなっていますか?はいの場合、どうすればそれを行うことができますか?このWikipediaの一般的なシェルの比較には、単一のPythonシェルがリストされていません:コマンドシェルの比較

回答:


15

そのスレッドと特に受け入れられている答えは、対話型のシェルとしてではなく、シェルスクリプトにPythonを使用することに関するものです。

別の言語でスクリプトを作成するには、スクリプトの先頭では#!/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年前に同様のトピックについて書きました。それ以降、状況が根本的に改善したとは思いません。


14

この質問は今ではかなり古いものですが、xonshと呼ばれるPython 3のスーパーセットに基づいた新しいシェルがあります。

ウェブサイトから:

Xonshは、Pythonに似た、BASHwardsに見えるシェル言語およびコマンドプロンプトです。この言語は、Python 3.4+のスーパーセットであり、BashおよびIPythonから慣れている追加のシェルプリミティブを備えています。Linux、Mac OSX、Windowsを含むすべての主要システムで動作します。Xonshは、専門家も初心者も日常的に使用するためのものです。

xon.shでご覧ください


2

むしろない

理由は、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のネイティブファイル処理を使用することはできません。


1
なぜsudoが他の何よりも悪いのか分かりません。sudoが必要な場合は、他のプログラムと同様に/ usr / bin / sudoを実行する必要があります。ここでの特定の例は、シェルメンタリティをPythonから使用することの難しさを示しています。より良い方法が可能かもしれませんが、それはあまり直接的な翻訳ではないでしょう。
rosuav

1

Ipythonは大丈夫です。また、「os」ライブラリもご覧ください。


確かに、IPythonは当然の選択だったはずです...しかし、どのようにしてIPythonをターミナルエミュレーターまたは実際のターミナル内で自動的に起動させるのでしょうか。
user89

コマンド:はchfn -s $(ipython)
user400344

それは文字化けしています...ただ:chfn -s $(which ipython)... ipythonへのフルパスが/ etc / shellsにあることを確認してください。
user400344 14

もう1つのオプションはexec ipython、現在のシェルスタートアップファイルからのものです。.bashrc
たとえば-ptman
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.