软链接(ln -s)不会链接到可执行文件

时间:2013-06-19 01:22:44

标签: bash hyperlink directory

我有一个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变量不是很熟悉,但我主要了解它们是如何工作的。我真的不想硬编码任何东西,这就是为什么我试图使用变量作为路径(在早期的脚本中读取,我知道它们在回声中是正确的)。我可能错过了一些引号或其他东西,但我尝试了很多组合,似乎无法让它正常工作。当我执行目录的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

0 个答案:

没有答案