獲取兩個路徑之間的相對路徑是一個很常見的問題,在Linux中怎么實現呢?
為了進行隔離,整個項目是用chroot跑的,有一次為了在chroot下建一個軟鏈接,又不能用絕對路徑,想自動計算一個路徑相對於另一個路徑的相對路徑,怎么辦呢?
經過一番搜索后發現,Linux中realpath和ln都有這個功能。
- realpath
realpath [OPTION]... FILE...
--relative-to=FILE
print the resolved path relative to FILE
example:
# realpath /var/chroot/var/log --relative-to=/var/chroot/var/lib/data/log
../../../log
- ln
ln [OPTION]... [-T] TARGET LINK_NAME
-r, --relative
create symbolic links relative to link location
example:
# ln -sr /var/chroot/var/log /var/chroot/var/lib/data/log/mylog
# ll /var/chroot/var/lib/data/log/
total 0
lrwxrwxrwx 1 root root 12 Mar 3 09:21 mylog -> ../../../log