关于软链接的一个小问题

2020-05-28 15:10:44 +08:00
 asanelder

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

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

目录结构如下

cmd -> mycmd/cmd.sh

--mycmd

----cmd.sh

----config

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

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

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

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

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

你可以建立个脚本在目录里就像我的例子 start.sh, 然后软连接到你的脚本不就好了?
mcfog
2020-05-28 16:39:20 +08:00
我猜这是个 XY 问题,应该做的是写个 shebang 直接启动这个 binary 就好
lniwn
2020-05-28 16:53:47 +08:00
方法宗旨就是 cmd.sh 里面修改 working_dir 。windows 的快捷方式可以指定 working_dir,所以可以直接启动
asanelder
2020-05-28 20:16:15 +08:00
@KentY 感谢,使用你的方法搞定了
asanelder
2020-05-28 20:16:34 +08:00
@lniwn 嗯嗯,是这样了

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/676331

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX