bash를 Python으로 바꾸려면 어떻게해야합니까?


13

이 SO 질문에 대한 대답에 따르면 : Python은 훌륭한 bash 대체를 할 수 있습니다 .

그렇다면 제 질문은 이것입니다 : 어떻게 완벽한 스위치를 만들 수 있습니까? 가상 스위치를 시작하려면 Bourne 쉘과 같은 것이 아니라 일부 Python 쉘을 호출하십시오 (그렇지만?).

말이 돼? 그렇다면 어떻게해야합니까? 일반적인 셸에 대한이 위키 백과 비교에는 단일 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 쉘 언어 및 명령 프롬프트입니다. 이 언어는 Bash 및 IPython에서 익숙한 추가 쉘 기본 요소가 포함 된 Python 3.4+의 상위 세트입니다. Linux, Mac OSX 및 Windows를 포함한 모든 주요 시스템에서 작동합니다. Xonsh는 전문가 및 초보자 모두에게 일상적으로 사용하기위한 것입니다.

xon.sh에서 참조하십시오


2

오히려

그 이유는 파이썬이 높은 권한을 다루는 것을 지원하지 않기 때문입니다. 최악의 경우는 시스템 파일을 편집하는 것입니다.

비교

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"})

파이썬은 본질적으로 상승 된 권한으로 하위 명령을 실행할 수 없기 때문에 시스템 파일에 대해 파이썬의 고유 파일 처리를 사용할 수 없습니다.


1
왜 sudo가 다른 것보다 더 나쁜지 잘 모르겠습니다. sudo가 필요한 경우 다른 프로그램과 같은 / usr / bin / sudo를 실행해야합니다. 여기서 당신의 특별한 예제는 쉘 사고 방식을 취하고 그것을 파이썬에서 사용하는데 어려움을 보여줍니다; 더 나은 방법이 가능할 수도 있지만 덜 직접적인 번역 일 것입니다.
rosuav 2016 년

1

파이썬 은 괜찮습니다. 또한 'os'라이브러리를보십시오.


그렇습니다 .IPython은 분명한 선택이었습니다.하지만 어떻게 IPython이 터미널 에뮬레이터 또는 실제 터미널 내부에서 자동으로 시작되도록합니까?
user89

명령 : chfn -s $ (which ipython)
user400344

그게 깨졌습니다 ... 그냥 : chfn -s $ (which ipython) ... ipython의 전체 경로가 / etc / shells에 있는지 확인하십시오.
user400344

또 다른 옵션은 다음 exec ipython과 같이 현재 쉘 시작 파일에서 수행하는 것입니다..bashrc
ptman
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.