Fazendo chamadas do sistema para bash a partir de scripts do gnuplot em distribuições baseadas no Ubuntu

2

Minha pergunta é: Como posso alterar o shell padrão do gnuplot? Eu quero mudar isso para enviar stdout para bash.

Isso deve ser bem fácil, mas estou desistindo. Aqui está o porquê.

Estou executando o gnuplot ver. 4.6 patchlevel 3 no Lubuntu 13.10.

Meu shell interativo padrão é o bash (shell Bourne-again), e o shell de login do Lubuntu parece ser dash (shell do Debian Almquist). Não há problema com isso.

Mas o gnuplot também está usando o dash em vez de bash. Isto é o que eu tenho quando pergunto ao gnuplot:

gnuplot> system "echo $0"
sh

E então, quando eu pergunto ao meu shell:

$ which sh
/bin/sh
$ ls -goh /bin/sh
lrwxrwxrwx 1 root root 4 Dec 23 09:30 /bin/sh -> dash

O contexto do problema: estou gerando vários gráficos epslatex e preciso alterar o caminho do gráfico de inclusão de cada um.

Isso não deve ser um problema, não é nada que sed e um loop não consiga resolver, mas chamar sed ou um script bash usando o comando system call do gnuplot não funcionou para mim. As últimas três linhas do último arquivo estão sempre ausentes. No entanto, executar o mesmo a partir do bash puro faz um trabalho bem limpo.

Eu também tentei o opossite, chamando o gnuplot de um script bash, incluindo comandos de impressão no script do gnuplot e tentando capturar a saída std do gnuplot para uma variável bash, mas também não funcionou. Tentar a seguinte linha do bash, por exemplo, retorna mensagens para a saída std, mas não armazena o conteúdo na variável.

var=$(gnuplot plot.gnu)

Não sei se isso é um problema do Lubuntu ou do gnuplot. Eu já resolvi meu problema de arquivos tex com uma solução alternativa, mas a coisa do shell do gnuplot ainda está me incomodando.

Então, estou perguntando de uma maneira geral: ¿Como posso alterar o shell padrão do gnuplot? É possível? Talvez isso possa ser útil para outra pessoa. ;)

Editado em 2016-08-03

A pergunta original era sobre como executar comandos bash e scripts do gnuplot usando uma chamada de sistema (usando o comando system ). No entanto, a solução que propus para essa questão foi alterar o shell original do sistema da distribuição, dash, para o shell que eu conhecia, bash.

Alterar o shell do sistema para o bash pode afetar o desempenho geral do sistema.

    
por aaguirre 07.01.2014 / 23:20

1 resposta

1

A melhor solução que encontrei foi configurar o bash como o shell padrão para todo o sistema (Ubuntu).

sudo dpkg-reconfigure dash

Esta linha abre um assistente ncurses, que pergunta sobre deixar o dash ser o shell padrão do sistema.

Se alguém responder no , então o bash é definido como o shell do sistema padrão.

Depois disso, meus scripts do gnuplot funcionaram perfeitamente.

Editado em 2016-08-03

Considere que esta solução está alterando o shell padrão de sua distribuição Linux e isso pode afetar o desempenho geral do sistema.

    
por 07.06.2014 / 06:39