我知道我的話題有點令人困惑,但這是我想要做的。創建與其他文件相關性的符號鏈接
我有一個文件,我想創建一個指向我家〜/ 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
即可。
將鏈接添加到其他文件。 –