0

ディレクトリ home/aaa/zzz/ に実行可能ファイル (APP.exe) を生成する bash スクリプトがあります。

この実行可能ファイル (実行権限を持つ) へのリンクを作成して、絶対パスを使用してディレクトリ home/bbb/yyy/ にショートカットを作成しようとすると、デッド リンクが表示され、その理由がよくわかりません。問題は、パスを変数として定義していることだと思います(これは汎用スクリプトであり、場所が変わる可能性があるためです)。.exe をシミュレーション フォルダーにリンクして、.exe をリビルドしたときにリンクが一定のままになり、シミュレーションがすべて一緒になるようにします。私の現在のスクリプトには、次のようなものが含まれています。

PATH_TO_EXE=/home/aaa/zzz
EXE_NAME=APP.exe
LINK_NAME=link_to_APP
PATH_TO_SIMULATIONS=/home/bbb/yyy

cd $PATH_TO_SIMULATIONS
ln -s $PATH_TO_EXE/$EXE_NAME $LINK_NAME

APP.exe へのリンクを機能させたいのですが、次のようなコマンドを bash ターミナルに入力するだけで機能させることができます。

cd /home/bbb/yyy
ln -s /home/aaa/zzz/APP.exe link_to_APP

.exe は、スクリプトがこの時点に到達するまでに既に生成されているため、問題はありません。最新の Linux (Ubuntu) 端末を使用しています。私は bash 変数にあまり詳しくありませんが、それらがどのように機能するかはほとんど理解しています。ハードコーディングする必要は本当にありません。そのため、パスとして変数を使用しようとしています (スクリプトの前半で読み込まれ、エコーから正しいことがわかっています)。おそらくいくつかの引用符か何かが欠けていますが、多くの組み合わせを試しましたが、正しく機能しないようです。ディレクトリの ls を実行すると、壊れたリンクが次のように表示されます。

link_to_APP -> /home/aaa/zzz/APP.exe

ご覧いただきありがとうございます。

編集:

@Samveenこれをスクリプトに含めました(理解しやすいように変数の名前を少し変更しました):

cd /home/bbb/yyy
CODE_EXE=APP.exe
CODE_PTH=/home/aaa/zzz
EXE=$CODE_PTH/$CODE_EXE
LINK_NAME=CODE
ln -s $EXE $LINK_NAME
echo ln -s $EXE $LINK_NAME
ls -l $EXE $LINK_NAME

そして出力:

ln -s /home/aaa/zzz/APP.exe CODE
ls: cannot access /home/aaa/zzz/APP.exe: No such file or directory
lrwxrwxrwx 1 usr usr 62 Jun 19 09:32 CODE -> /home/aaa/zzz/APP.exe

これは、変数が正しく読み取られていないと思いますか? 再度、感謝します。

編集:

私はそれを機能させました...しかし、私は本当に何も変えませんでした。私はちょうど通り抜けて、.exeの検索を停止するパスを見つけようとしましたが、最終的には機能しました. 実際のパス接続は、この例で使用したものよりもはるかに複雑です。役立つ説明をありがとう@SethMMorton。

これは機能したコードです(基本的には以前と同じです):

cd $sims_PTH    
# Link the exe
EXE=APP.exe
EXE_PTH=$build_PTH/code/src
rm $LINK_name #delete old link
ln -s $EXE_PTH/$EXE $LINK_name #create new symbolic link
4

0 に答える 0