1

2台のコンピューターで実行しているスクリプトがあります。コードの最初の行は次のようになります。

#!/usr/bin/gnuplot -p

2台目のコンピューターでは、に保存されているバージョンのGNUplotを使用したいと思います$HOME/bin/gnuplot

$HOME/binは2番目のコンピューターの$PATH変数に含まれているので、GNUplotへの一般的な呼び出しでスクリプトを開始してみました。

#!gnuplot -p

しかし、スクリプトがを検索したため、これは機能しませんでした./gnuplot

両方のコンピューターでヘッダー行を同じにする方法はありますか?スクリプトがコンピューターを区別したり、どのコンピューター上にあるかを教えたりする必要なしに、ソリューションがその1行に何らかの形で含まれていることを望んでいます。

4

3 に答える 3

1

#!/usr/bin/env gnuplotここここに記載されているように、インタプリタを表現するためのより移植性の高い方法です。

ただし、これにより、予期しない問題が発生する可能性があります。

#!/usr/bin/gnuplot -p

永続的なGNUplotウィンドウを作成しますが、実行中

#!/usr/bin/env gnuplot -p

これは、明らかにポータブルな代替手段が機能しないように思われます。

これのいくつかの理由はここで議論されていますが、それを回避する方法は実際にはないようです:議論と実際にはうまくいき/usr/bin/envません。

-pフラグの特定のケースでは、使用するのが最適です

#!/usr/bin/env gnuplot

次に、行を含めます

set term x11 persist

GNUplotスクリプトで、同じことをします。

于 2013-03-05T21:25:16.960 に答える
1

#!/usr/bin/env gnuplotよりポータブルになります。

于 2013-03-05T21:06:53.500 に答える
0

明らかな解決策は

#!/usr/bin/env gnuplot

この方法の長所と短所については、この質問私の回答を参照してください。

しかし、あなたの場合、-p引数をgnuplot--に渡す必要があり、その#!行はその構文を処理しません。使用できます

#!/usr/bin/gnuplot -p

しかし、試してみると:

#!/usr/bin/env gnuplot -p

おそらく、という名前の何かを実行しようとしますがgnuplot -p、もちろん存在しません("gnuplot -p"単一の引数としてに渡されます/usr/bin/env)。

私が使用した解決策は#!、各システムの行を変更するインストールスクリプトを作成することです。それを行う方法を理解することは、演習として残されています。

ホームディレクトリのフルパス名が両方のコンピュータで同じである場合は、次のように実行できます。

#!/home/yourname/bin/gnuplot -p

gnuplot住んでいるコンピュータでは$HOME/bin、これはあなたが望むことをします。もう1つは、を使用する場所で、:へのシンボリックリンクとして/usr/bin/gnuplot作成します。$HOME/bin/gnuplot/usr/bin/gnuplot

ln -s /usr/bin/gnuplot ~/bin/gnuplot

$HOME/bin両方のマシンでディレクトリを混乱させたくない場合、または$HOMEフルパス名が異なる場合は、別のディレクトリを選択してください。たとえば、/tmp/yourname/bin両方のマシンにインストールできます。

mkdir -p /tmp/yourname/bin
ln -s /usr/bin/gnuplot /tmp/yourname/bin/gnuplot # on one machine, OR
ln -s ~/bin/gnuplot /tmp/yourname/bin/gnuplot    # on the other

と使用:

#!/tmp/yourname/bin/gnuplot -p
于 2013-03-05T21:24:12.407 に答える