0

我有一个 bash 脚本,它在 home/aaa/zzz/ 目录中生成一个可执行文件 (APP.exe)

当我尝试使用绝对路径创建指向此可执行文件(具有可执行权限)的链接以在目录 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 变量不是很熟悉,但我主要了解它们是如何工作的。我真的不想对任何东西进行硬编码,这就是为什么我尝试使用变量作为路径(在脚本的前面读入,我知道它们从 echo 中是正确的)。我可能遗漏了一些引号之类的东西,但我尝试了很多组合,但似乎无法让它正常工作。当我对目录执行 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