이 SO 질문에 대한 대답에 따르면 : Python은 훌륭한 bash 대체를 할 수 있습니다 .
그렇다면 제 질문은 이것입니다 : 어떻게 완벽한 스위치를 만들 수 있습니까? 가상 스위치를 시작하려면 Bourne 쉘과 같은 것이 아니라 일부 Python 쉘을 호출하십시오 (그렇지만?).
말이 돼? 그렇다면 어떻게해야합니까? 일반적인 셸에 대한이 위키 백과 비교에는 단일 Python 셸이 나열되어 있지 않습니다. 명령 셸 비교
답변
이 스레드와 그에 대한 대답은 특히 대화식 쉘이 아니라 쉘 스크립팅에 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 년 전에 비슷한 주제에 대해 썼다 . 그때 이후로 상황이 근본적으로 개선되지 않았다고 생각합니다.
답변
나는이 질문이 지금 아주 오래되었다는 것을 알고 있지만 xonsh라는 Python 3의 슈퍼 세트를 기반으로하는 새로운 쉘이 있습니다.
웹 사이트에서 :
Xonsh는 Python을 사용하는 BASHwards 쉘 언어 및 명령 프롬프트입니다. 이 언어는 Bash 및 IPython에서 익숙한 추가 쉘 기본 요소가 포함 된 Python 3.4+의 상위 세트입니다. Linux, Mac OSX 및 Windows를 포함한 모든 주요 시스템에서 작동합니다. Xonsh는 전문가 및 초보자 모두에게 일상적으로 사용하기위한 것입니다.
답변
오히려
그 이유는 파이썬이 높은 권한을 다루는 것을 지원하지 않기 때문입니다. 최악의 경우는 시스템 파일을 편집하는 것입니다.
비교
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"})
파이썬은 본질적으로 상승 된 권한으로 하위 명령을 실행할 수 없기 때문에 시스템 파일에 대해 파이썬의 고유 파일 처리를 사용할 수 없습니다.