我知道我的话题有点令人困惑,但这是我想要做的。创建与其他文件相关性的符号链接
我有一个文件,我想创建一个指向我家〜/ bin的链接,但是当我运行该文件(shell脚本)时创建该文件的链接时,该文件需要在其目录中包含另一个文件。因此,它无法运行,因为它找不到其他文件。我能做什么?
谢谢
我知道我的话题有点令人困惑,但这是我想要做的。创建与其他文件相关性的符号链接
我有一个文件,我想创建一个指向我家〜/ bin的链接,但是当我运行该文件(shell脚本)时创建该文件的链接时,该文件需要在其目录中包含另一个文件。因此,它无法运行,因为它找不到其他文件。我能做什么?
谢谢
那么,你有两个简单的解决方案。
编辑shell脚本指向文件的绝对路径,而不仅仅是基本名称。
./path/to/file.sh
VS file.sh
所以这样的事情应该做你以后有什么。 sed -i 's|file.sh|./path/to/file.sh|g' ~/bin/script.sh
它在这种情况下搜索您的符号链接文件script.sh,并将调用file.sh替换为./path/to/file.sh。注意你经常看到sed
使用/的。但它可以使用任何东西作为分隔符,如果您希望在这里使用/',您需要将它们转义。 /。你可能想考虑逃避。 (期间),但在这种情况下,它不是必需的。如果您是sed
的新手,意识到-i
标志意味着它将编辑文件到位。最后,要实现一个简单的搜索和替换操作,您可以选择手动完成。
第二种方法是创建一个ln -s
到该文件,就像您对另一个文件所做的那样,因此在这两个文件之间存在一个符号链接。
ln -s /far/off/script.sh ~/bin/script.sh
和
ln -s /far/off/file.sh ~/bin/file.sh
或者,你可以修改你的脚本
pushd ~/bin
##### your script here
popd
组合的readlink
和dirname
会拿到剧本的实际目录:
my_dir=$(dirname "$(readlink -f "$0")")
source "$my_dir/other_file"
我宁愿创建〜/斌/`调用从相应的目录中可执行的脚本文件。
下面是使用的例子/ 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
即可。
将链接添加到其他文件。 –