環境やセッションに変数を正しく追加する方法

環境やセッションに変数を正しく追加する方法

私はローカルに構築されたオープンソースソフトウェアを使用しています。ビルド後のマニュアルは、次のようにビルドディレクトリで実行するように指示します。

$ LD_LIBRARY_PATH=../applicationExeFile

これにより、アプリケーションが正常に実行されます。

それでは、あまり入力せずにすばやく呼び出すことができる単純なシェル(run.sh)を作成しようとしています。内容は次のとおりです。

#!/bin/bash

export -n LD_LIBRARY_PATH=.
./applicationExeFile

ただし、同じフォルダにライブラリが見つからないアプリケーション実行可能ファイルのエラーが発生したため、LD_LIBRARY_PATHがシェルに登録されていないようです。

./applicationExeFile: error while loading shared libraries: libchart.so: cannot open shared object file: No such file or directory

私が何を間違っているのか、どうやってこれを達成できますか?

ベストアンサー1

-n最初の質問は事実連合国変数をエクスポートしますが、エクスポートしません。バラよりhelp export

export: export [-fn] [name[=value] ...] or export -p
    Set export attribute for shell variables.
    
    Marks each NAME for automatic export to the environment of subsequently
    executed commands.  If VALUE is supplied, assign VALUE before exporting.
    
    Options:
      -f    refer to shell functions
      -n    remove the export property from each NAME
      -p    display a list of all exported variables and functions
    
    An argument of `--' disables further option processing.
    
    Exit Status:
    Returns success unless an invalid option is given or NAME is invalid.

以下は、.プロセスの現在の作業ディレクトリを参照しています。これは、スクリプトがまだインストーラの特定のディレクトリで実行する必要があることを意味しますが、これは少し無意味です。ちょうどフルパスを使用してください。プログラムがある場合は、/home/dekker/myprogramスクリプトを次のようにします。

#!/bin/bash
export LD_LIBRARY_PATH=/home/dekker/myprogram
/home/dekker/myprogram/applicationExeFile

それ以外の場合:

#! /bin/sh -
LD_LIBRARY_PATH=/home/dekker/myprogram exec /home/dekker/myprogram/applicationExeFile

具体的な内容がなく、bash別途の陳述が必要ないからですexport。また、使用するとexecプロセスが節約され、信号処理と終了ステータスの報告がより安定して行われます。

おすすめ記事