Ubuntuベースのディストリビューションでgnuplotスクリプトからbashへのシステムコールを行う


2

私の質問は、どうすればgnuplotのデフォルトのシェルを変更できますか?stdoutをbashに送信するために変更したい。

これはかなり簡単なはずですが、私はあきらめています。その理由は次のとおりです。

gnuplot ver。を実行しています。4.6 Lubuntu 13.10。のパッチレベル3

私のデフォルトの対話型シェルはbash(Bourne-again shell)であり、Lubuntuのログインシェルはdash(Debian Almquistシェル)のようです。問題ありません。

しかし、gnuplotはbashの代わりにダッシュも使用しています。これは私がgnuplotに尋ねたときに得たものです:

gnuplot> system "echo $0"
sh

そして、シェルに尋ねると:

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

問題のコンテキスト:いくつかのepslatexプロットを生成していますが、それぞれのincludegraphicsパスを変更する必要があります。

これは問題ではないはずです。sedとループが解決できないことは何もありませんが、gnuplotのシステムコールコマンドを使用してsedまたはbashスクリプトを呼び出すことはうまくいきませんでした。最後のファイルの最後の3行は常に欠落しています。ただし、純粋なbashから同じものを実行すると、かなりきれいになります。

また、opossiteを試し、gnuplotスクリプトからgnuplotを呼び出し、gnuplotスクリプトの印刷コマンドを含め、gnuplotのstd出力をbash変数にキャプチャしようとしましたが、どちらも機能しませんでした。たとえば、bashから次の行を試行すると、std出力にメッセージが返されますが、変数には内容が保存されません。

var=$(gnuplot plot.gnu)

これがLubuntuの問題なのかgnuplotの問題なのかわかりません。回避策で既にtexファイルの問題を解決しましたが、gnuplotのシェルの問題はまだ気にしています。

だから私はそれを一般的な方法で尋ねています:¿どうすればgnuplotのデフォルトシェルを変更できますか?出来ますか?たぶんそれは他の誰かにとって役に立つかもしれません。;)

2016年8月3日に編集

最初の質問は、システムコールを使用して(systemコマンドを使用して)gnuplotからbashコマンドとスクリプトを実行する方法についてでした。ただし、この質問に対して提案した解決策は、ディストリビューションの元のシステムシェルdashを、知っているシェルbashに変更することでした。

システムシェルをbashに変更すると、システムの全体的なパフォーマンスに影響する場合があります。


実際、これは2つの質問です。あなたが持っている実際の目的と、によって生成されるシェルを変更する方法gnuplotです。どれがチョコレートで覆われていると思いますか。実際の目標をより詳細に拡張することをお勧めします。その後、誰かがTeX StackExchangeがあることをあなたに伝えることができます。(-:
JdeBP 14年

1
提案をありがとう。私はここで新しく、StackExchangeには初めての人ですが、私の質問はここでうまく適合すると思います。私の主な質問は、gnuplotのシェルを変更する方法についてです。他の問題の回避策を講じることができます。:)
aaguirre 14年

回答:


1

私が見つけた最良の解決策は、システム全体(Ubuntu)のデフォルトのシェルとしてbashを構成することでした。

sudo dpkg-reconfigure dash

この行は、ncursesアシスタントを開き、ダッシュをデフォルトのシステムシェルにすることを要求します。

noと答えると、bashがデフォルトのシステムシェルとして設定されます。

その後、私のgnuplotスクリプトは問題なく動作しました。

2016年8月3日に編集

このソリューションはLinuxディストリビューションのデフォルトのシェルを変更しているため、システムの全体的なパフォーマンスに影響する可能性があることを考慮してください。


私のために働かなかった。このコマンドを実行すると、がls -l /bin/sh表示されます/bin/sh -> bashが、system "echo $0"まだ出力されますsh
-arekolek

@arekolekうまくいかなかったと確信していますか?コマンドが使用されてshいること/bin/shとbashが/bin/bash使用していることを確認できwhichます。listコマンドは、それshがへのシンボリックリンクであることbashを示しているため、毎回sh呼び出されてからbash使用されます。のdash代わりに呼び出される場合を除きbash、これはこのソリューションの反対です。一方、システム "echo $ 0" shは、dashまたはを指しているかどうかに関係なく常に印刷されbashます。
-aaguirre

私はあなたが正しいと思う、私はsh代わりにだまされましたbash。ランニング!ls -go $(which $0)はのテストよりも優れていると思い!echo $0ます。私は自分の~/.zshrc内側から関数を使用できることを望んでgnuplotいましたが、どうやらその時点ではソースになっていないようです。
-arekolek
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.