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.