2011-06-29 52 views
4

我知道我的話題有點令人困惑,但這是我想要做的。創建與其他文件相關性的符號鏈接

我有一個文件,我想創建一個指向我家〜/ bin的鏈接,但是當我運行該文件(shell腳本)時創建該文件的鏈接時,該文件需要在其目錄中包含另一個文件。因此,它無法運行,因爲它找不到其他文件。我能做什麼?

謝謝

+1

將鏈接添加到其他文件。 –

回答

2

那麼,你有兩個簡單的解決方案。

  1. 編輯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標誌意味着它將編輯文件到位。最後,要實現一個簡單的搜索和替換操作,您可以選擇手動完成。

  2. 第二種方法是創建一個ln -s到該文件,就像您對另一個文件所做的那樣,因此在這兩個文件之間存在一個符號鏈接。

    ln -s /far/off/script.sh ~/bin/script.sh

    ln -s /far/off/file.sh ~/bin/file.sh

more on symlinking

0

或者,你可以修改你的腳本

pushd ~/bin 

##### your script here 

popd 
0

組合的readlinkdirname會拿到劇本的實際目錄:

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

我寧願創建〜/斌/`調用從相應的目錄中可執行的腳本文件。

下面是使用的例子/ 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即可。

相關問題