이 질문에 대한 답변에 따르면,Python은 bash를 대체할 수 있는 좋은 방법입니다..
그래서 제 질문은: 어떻게 원활한 전환을 할 수 있나요? 내 생각에 그러한 전환을 하기 위해 해야 할 가장 중요한 일은 가상 터미널을 시작할 때 Bourne 쉘과 같은 것 대신 Python 쉘을 호출하는 것입니다(그러나 어떻게?).
말이 돼? 그렇다면 어떻게 해야 합니까? Wikipedia의 일반적인 쉘 비교에는 단일 Python 쉘이 나열되지 않습니다.명령 셸 비교
답변1
지금은 이 질문이 오래되었다는 것을 알고 있지만, 여러분이 찾고 있는 xonsh라는 Python 3 상위 집합을 기반으로 하는 새로운 셸이 있습니다.
웹사이트에서:
Xonsh는 Python 및 BASHwards와 유사한 쉘 언어이자 명령 프롬프트입니다. 이 언어는 Python 3.4+의 상위 집합이며 Bash 및 IPython에서 사용하는 데 익숙한 추가 셸 기본 요소가 포함되어 있습니다. Linux, Mac OSX 및 Windows를 포함한 모든 주요 시스템에서 작동합니다. Xonsh는 전문가와 초보자 모두가 일상적으로 사용하기에 적합합니다.
답변2
이 스레드와 허용되는 답변은 특히 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년 전에도 비슷한 주제를 썼어요;그 이후로 상황이 근본적으로 개선되지는 않았다고 생각합니다.
답변3
대신에
그 이유는 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의 기본 파일 처리를 사용할 수 없습니다.
답변4
파이썬괜찮아요. 또한 "os" 라이브러리를 살펴보세요.