Como posso substituir o bash pelo Python?

12

De acordo com a resposta aceita para esta pergunta SO:, Python pode faça um ótimo substituto .

A minha pergunta, então, é: como faço para ir sobre como fazer uma simples mudança? Eu acho que a principal coisa para resolver para fazer tal mudança seria: quando se inicia um terminal virtual, chamar alguns shell Python (o que?), Ao invés de algo como shell Bourne

.

Isso faz sentido? Se sim, como eu poderia fazer isso? Esta comparação Wikipedia de conchas comuns não lista um único shell Python: Comparação de shells de comando

    
por user89 27.12.2014 / 02:18

4 respostas

15

Esse segmento e sua resposta aceita, em particular, são sobre o uso do Python para shell scripting , não como um shell interativo .

Para escrever scripts em um idioma diferente, coloque, por exemplo, #!/usr/bin/env python em vez de #!/bin/bash no topo do seu script.

Se você quiser experimentar um shell interativo diferente, basta executá-lo, por exemplo, digite ipython no seu prompt de shell existente. Se você decidiu adotar esse shell, defina a variável de ambiente SHELL no início de sua sessão (em ~/.profile na maioria dos ambientes ou em ~/.pam_environment ), por exemplo, export SHELL=/usr/bin/ipython ( .profile sintaxe) ou SHELL="/usr/bin/ipython" ( .pam_environment sintaxe).

Nenhuma das camadas que vi baseadas em linguagens avançadas, como Perl ou Python, são boas o suficiente para uso interativo na minha opinião. Eles são muito detalhados para tarefas comuns, especialmente o trabalho comum de um shell que é iniciar um aplicativo. Eu escrevi sobre um tópico semelhante há 4 anos ; Eu não acho que a situação melhorou fundamentalmente desde então.

    
por 27.12.2014 / 18:02
11

Eu sei que esta questão é bastante antiga agora, mas há um novo shell baseado em um superconjunto do Python 3 chamado xonsh, que pode ser o que você está procurando.

do site:

Xonsh is a Python-ish, BASHwards-looking shell language and command prompt. The language is a superset of Python 3.4+ with additional shell primitives that you are used to from Bash and IPython. It works on all major systems including Linux, Mac OSX, and Windows. Xonsh is meant for the daily use of experts and novices alike.

Veja em xon.sh

    
por 06.01.2016 / 12:54
1

O Ipython está ok. Além disso, veja a biblioteca 'os'.

    
por 27.12.2014 / 02:32
1

Em vez disso, não

O motivo é que o Python não tem suporte para lidar com privilégios elevados. O pior caso é com a edição de arquivos do sistema.

Compare

sudo sed -i -e "/\#LXC_DOMAIN/ s/\#//" /etc/default/lxc-net

com:

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

Você não pode usar o tratamento de arquivos nativos do Python para arquivos do sistema, porque o Python é inerentemente incapaz de executar subcomandos com privilégios elevados.

    
por 26.04.2017 / 12:38

Tags