Thư mục chứa tập lệnh bash khi chạy qua ln -s


1

Trong / usr / local / bin Tôi có một 'ln -s' thành /usr/local/foo/bash.script và trong tập lệnh sau này tôi muốn biết thư mục / usr / local / foo hiện tại , để tôi có thể chạy một kịch bản thứ cấp từ thư mục đó.

Bây giờ, tôi đã thử dirname $ 0 , nhưng điều đó cho tôi thư mục / usr / local / bin thay thế. Tôi nên sử dụng cái gì trong bash.script để lấy thư mục / usr / local / foo ?

Câu trả lời:


5

thử readlink, vd

d=$0

while readlink $d >/dev/null; do
  d=`readlink $d`
done
echo $d

CHỈNH SỬA :

Tôi không chắc nếu nó hoạt động trên hệ điều hành Unix khác, nhưng nếu bạn đang dùng linux, những điều trên có thể được đơn giản hóa bằng cách sử dụng

d=`readlink -f $0`

echo $d

xem

readlink --help

Thanx cho con trỏ! Tôi vẫn cần kết hợp với dirname và tôi đã thấy readlink -f, thực hiện các thao tác trên trong một lệnh ... có ý tưởng nào về cách di động đó không?
Egon Willighagen

@Egon: cũng -fhoạt động trên cygwin (trên Win-7-64bit). Nhưng nó không hoạt động trên MacOS.
Vokuhila-Oliba

À, vậy, đủ tốt cho nhu cầu của tôi, vì nó là một phần của tập lệnh chỉ dành cho Linux :) thanx!
Egon Willighagen
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.