V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
• 请不要在回答技术问题时复制粘贴 AI 生成的内容
asanelder
V2EX  ›  程序员

关于软链接的一个小问题

  •  
  •   asanelder · 2020-05-28 15:10:44 +08:00 · 1542 次点击
    这是一个创建于 1675 天前的主题,其中的信息可能已经有所发展或是发生改变。

    我想通过软链接执行一个脚本,结构如下

    cmd 是一个软链接,cmd.sh 是要执行的脚本,config 是脚本需要的配置文件。

    目录结构如下

    cmd -> mycmd/cmd.sh

    --mycmd

    ----cmd.sh

    ----config

    现在有一个问题是:使用 cmd 的时候,找不到 config 文件,怎么办?

    11 条回复    2020-05-28 20:16:34 +08:00
    vZexc0m
        1
    vZexc0m  
       2020-05-28 15:37:29 +08:00
    config 用绝对路径
    KentY
        2
    KentY  
       2020-05-28 16:10:04 +08:00
    @vZexc0m 这个能解决他的问题, 但是不是最好的办法. 设想, 如果这个脚本目录改变一次, 你就得修改一次代码.
    可以在脚本内部确定脚本所在的当前绝对路径. 我在很久以前的一个脚本用了, 特意判断是不是链接 你可以参考:
    https://github.com/sk1418/passwdmanager/blob/master/start.sh
    churchmice
        3
    churchmice  
       2020-05-28 16:17:44 +08:00
    方法多了去了
    perl 里面你可以通过$0 拿到脚本名字,然后用 abs_path 得到绝对路径
    asanelder
        4
    asanelder  
    OP
       2020-05-28 16:21:08 +08:00
    @KentY 不好意思,是这样的,以上只是我为了说明问题举的一个简化的例子,真实情况是是一个二进制的文件,而且不是我写的,我修改不了原代码。

    我记得 windows 下的快捷方式就没有这种问题,不知道 有没有不通过修改源码可以解决的方式。
    asanelder
        5
    asanelder  
    OP
       2020-05-28 16:21:17 +08:00
    @churchmice 不好意思,是这样的,以上只是我为了说明问题举的一个简化的例子,真实情况是是一个二进制的文件,而且不是我写的,我修改不了原代码。

    我记得 windows 下的快捷方式就没有这种问题,不知道 有没有不通过修改源码可以解决的方式。
    asanelder
        6
    asanelder  
    OP
       2020-05-28 16:21:21 +08:00
    @vZexc0m 不好意思,是这样的,以上只是我为了说明问题举的一个简化的例子,真实情况是是一个二进制的文件,而且不是我写的,我修改不了原代码。

    我记得 windows 下的快捷方式就没有这种问题,不知道 有没有不通过修改源码可以解决的方式。
    KentY
        7
    KentY  
       2020-05-28 16:26:28 +08:00
    @asanelder
    没有关系啊, 比如:
    yourDir/
    |_ youCannotChange.bin
    |_config

    你可以建立个脚本在目录里就像我的例子 start.sh, 然后软连接到你的脚本不就好了?
    mcfog
        8
    mcfog  
       2020-05-28 16:39:20 +08:00 via Android
    我猜这是个 XY 问题,应该做的是写个 shebang 直接启动这个 binary 就好
    lniwn
        9
    lniwn  
       2020-05-28 16:53:47 +08:00 via iPhone
    方法宗旨就是 cmd.sh 里面修改 working_dir 。windows 的快捷方式可以指定 working_dir,所以可以直接启动
    asanelder
        10
    asanelder  
    OP
       2020-05-28 20:16:15 +08:00
    @KentY 感谢,使用你的方法搞定了
    asanelder
        11
    asanelder  
    OP
       2020-05-28 20:16:34 +08:00
    @lniwn 嗯嗯,是这样了
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   1016 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 23ms · UTC 19:13 · PVG 03:13 · LAX 11:13 · JFK 14:13
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.