basename /root/aaa/bbb/dabu.txt
# 輸出: dabu.txt
DIR=$(cd "$(dirname "$0")"; pwd)
DIR=$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)
SOURCE="${BASH_SOURCE[0]}"
while [ -h "$SOURCE" ]; do
DIR="$(cd -P "$(dirname "$SOURCE")" && pwd)"
SOURCE="$(readlink "$SOURCE")"
[[ $SOURCE != /* ]] && SOURCE="$DIR/$SOURCE"
done
DIR="$(cd -P "$(dirname "$SOURCE")" && pwd)"
關鍵點:
BASH_SOURCE[0] 為陣列,儲存腳本來源路徑,source 或管道執行時 $0 會變為 bash,前者不變。cd -P 解析符號連結後的實體路徑。readlink 取得目標,相對路徑需基於連結檔所在目錄解析。cd 切換目錄,上述片段需置於腳本開頭或使用 $DIR 而非 pwd。Linux 網卡綁定多 IP 設定:ifconfig 臨時指令與永久配置檔雙軌教學
徹底解決 vsftpd 530 Login incorrect:CentOS 6.5 實戰排查全記錄
VMware 虛擬機安裝 Kali Linux 2.0 完整圖文教學
Linux 資源限制完整指南:系統級、應用級與核心級三層架構詳解
Linux 匿名上網四大法寶:Tails OS、Tor、MAC 變臉與加密通訊
Linux 系統安裝 JDK 完整教學 (RPM 套件與環境變數配置)
Linux 管道命令大全:cut、grep、sort、uniq、wc、tee、tr、join、paste、split、xargs 實戰詳解