スクリプトが下付き文字の代わりに実行可能として表示されるようにコマンドをラップするにはどうすればよいですか?

スクリプトが下付き文字の代わりに実行可能として表示されるようにコマンドをラップするにはどうすればよいですか?

メモリ使用量を制限するためにRスクリプトをラップしました/usr/lib/R/bin/exec/R。名前を変更し/usr/lib/R/bin/exec/R_orig/usr/lib/R/bin/exec/Rコンテンツ名にちなんでbashスクリプトを作成しました。

#!/bin/bash
echo "Memory limited to 10G"
ulimit -Sv 10000000 #limit memory for 64-bit version
/usr/lib/R/bin/exec/R_orig "$@"

これはこの特定のプログラムの私の経験で大きな改善でしたが、そのいくつかは実際にパッケージのインストールパスを決定するために実行可能ファイル名を使用し、実行可能ファイル名が変更されたため失敗したことを発見しました。

/usr/lib/R/bin/exec/R私のスクリプト自体を実行可能ファイルと見なすことはできますか?たとえば、top個々の子プロセスを表示せずにR_origプロセスのみを表示しますかR

ベストアンサー1

しないでください。元のコンテンツを文字列を標準出力に出力するコンテンツに置き換えることで、出力を解析できるRアプリケーションを混同する可能性があります。

代わりに、新しい名前でラッパースクリプトを作成し、元のR実行可能ファイルを変更しないでください。このスクリプトを/usr/lib/R/bin/exec同様の場所に置かないでください/usr/local/bin(すべてのユーザーがアクセスする必要がある場合)。また、将来のパッケージのアップグレードや削除スクリプトを混同することはありません。

シェル起動ファイルでシェル関数を定義することもできます。

myR () (
    echo "Memory limited to 10G"
    ulimit -Sv 10000000 #limit memory for 64-bit version
    exec /usr/lib/R/bin/exec/R "$@"
)

別の明確な選択は、シェル初期化スクリプトで制限(~/.bashrcfor)を設定することですbash。この制限は、シェルで開始されたすべてのプロセスに適用されます。

おすすめ記事