shell 如何创建依赖于其他文件的符号链接?

beq87vna  于 2023-02-24  发布在  Shell
关注(0)|答案(4)|浏览(149)

我知道我的主题有点混乱,但这是我想做的。
我想在主目录~/bin中创建一个链接文件,但是当我执行这个符号链接的文件时,这个文件需要在它的目录中有另一个文件。因此,它无法运行,因为它找不到另一个文件。我该怎么办?

jucafojl

jucafojl1#

你有两个简单的解决办法。
1.编辑shell脚本以指向文件的绝对路径,而不仅仅是基本名称。
一个月一个月与一个月一个月
因此,类似这样的代码应该可以完成. sed -i 's|file.sh|./path/to/file.sh|g' ~/bin/script.sh之后的工作,它搜索符号链接文件,script.sh在本例中为www.example.com,并将对www.example.com的调用替换file.sh为./path/to/file.sh。注意,您经常看到sed使用/。但它可以使用任何内容作为分隔符,如果您希望在此处使用/,则需要转义它们。/.您可能要考虑转义。(句号)同样,但在这种情况下它是不必要的。如果你是sed的新手,要意识到-i标志意味着它将就地编辑文件。最后,我意识到这是一个简单的搜索和替换操作,你可以选择手工操作。
1.第二种方法是创建一个ln -s到该文件,就像对另一个文件所做的那样,这样两个文件之间就存在一个符号链接。
ln -s /far/off/script.sh ~/bin/script.sh
以及
ln -s /far/off/file.sh ~/bin/file.sh
关于符号链接的更多信息

vulvrdjw

vulvrdjw2#

我更愿意在~/bin/'中创建一个脚本文件,从适当的目录调用您的可执行文件。
下面是使用/sbin/ifconfig的示例:

$ cat > ~/bin/file
#!/bin/bash

file=/sbin/ifconfig
cd `dirname $file`
`basename $file` 
(ctr+d)
$ chmod +x ~/bin/file
$ file

这里您应该看到ifconfig的输出,但重点是:它是从/sbin目录执行的。所以如果ifconfig有依赖项,它将正常工作。只需将/sbin/ifconfig替换为绝对路径。

wz3gfoph

wz3gfoph3#

或者,您可以将脚本修改为

pushd ~/bin

##### your script here

popd
mcdcgff0

mcdcgff04#

readlinkdirname的组合将获得脚本的实际目录:

my_dir=$(dirname "$(readlink -f "$0")")
source "$my_dir/other_file"

相关问题