首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >指向可执行文件的符号链接不启动应用程序,错误:<symlink>不存在

指向可执行文件的符号链接不启动应用程序,错误:<symlink>不存在
EN

Stack Overflow用户
提问于 2014-08-09 16:45:12
回答 3查看 813关注 0票数 1

我有一个指向可执行文件的符号链接,我创建了如下所示:

代码语言:javascript
复制
$ ln -s /home/x/app/wps_office/wps

如果在命令行上输入:

代码语言:javascript
复制
$ /home/x/app/wps_office/wps

然后我的应用程序正确启动,但是如果我试图通过符号链接启动我的应用程序,那么我会得到以下错误:

代码语言:javascript
复制
$ wps
wps does not exist!

只是为了确保符号链接是否正确;

代码语言:javascript
复制
$ readlink wps
/home/x/app/wps_office/wps

文件夹/home/x/bin是我创建符号链接的地方,这个文件夹包含在我的$PATH变量中。

我看不出这里出了什么问题,为什么我的应用程序在使用符号链接时不执行呢?

快速更新;

我刚刚快速查看了符号链接指向的文件的内容,看起来消息wps does not exist实际上来自应用程序,这意味着符号链接实际上是正确的。我不知道为什么,因为我觉得奇怪的是,当我不使用符号链接的时候,一切都是正确的。我需要更彻底地查看代码,才能找到答案。

符号链接指向的文件的代码:

代码语言:javascript
复制
#!/bin/bash

gOpt=
gTemplateExt=("wpt" "dot" "dotx")
gBinPath=$(dirname "$0")
if [ -d "${gBinPath}/office6" ]; then
    gInstallPath=${gBinPath}
else
    gInstallPath=/opt/kingsoft/wps-office
fi
gApp=wps

function parse_arg()
{
    if [ $# -eq 1 ] ; then
        ext="${1##*.}"
        if [ "" = "${ext}" ] ; then
            return 0
        fi

        for i in ${gTemplateExt}
        do
            if [ "${ext}" = "${i}" ] ; then
                gOpt=-t
            fi
        done
    fi
}

function run()
{
    oldPwd="${PWD}"
    if [ -e "${gInstallPath}/office6/${gApp}" ] ; then
        if [ -d /usr/lib32/gtk-2.0 ]; then
            export GTK_PATH=/usr/lib32/gtk-2.0
        fi
        ${gInstallPath}/office6/${gApp} ${gOpt} "$@" || ${gBinPath}/wps_error_check.sh ${gInstallPath}/office6/${gApp}
    else
        echo "${gApp} does not exist!"
    fi
}

function main()
{
    parse_arg "$@"
    run "$@"
}

main "$@"

注意上面写着echo "${gApp} does not exist!"的行,这是我的错误的来源。

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2014-08-09 17:25:46

换行

gInstallPath=/opt/kingsoft/wps-office

在脚本中

gInstallPath=/home/x/app/wps_office

票数 1
EN

Stack Overflow用户

发布于 2014-08-09 16:48:41

命令只有在没有任何路径元素的情况下才会执行,如果它们是shell的一部分,或者是在path环境变量中。在符号链接所在的目录中尝试./wps。还请确认权限是否正确。

票数 2
EN

Stack Overflow用户

发布于 2014-08-09 17:19:04

符号链接指向的文件将接受当前目录来启动另一个文件。这是实际启动的文件。这个问题可以通过创建一个指向这个文件的符号链接来解决,这意味着一个指向/home/x/app/wps_office/office6/wps的符号链接。

另一个选项是编辑源文件本身,正如@Pixelchemist所解释的那样。但是,由于它涉及到我下载的应用程序,并且可能在将来更新,我认为在这种情况下,这不是首选的选择。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/25220803

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档