tùy chọn không hợp lệ dirname `b`


8

Tại sao tôi nhận được lỗi này, tôi đang cố gắng tìm nguồn này.

user@connect:~/testenv$ source $(cd $(dirname $0) && pwd)"/set.conf"
dirname: invalid option -- 'b'
Try 'dirname --help' for more information.
-bash: /home/tempuser/set.conf: No such file or directory

Tôi đã thử thêm - $ 0 vào dấu nhắc lệnh, nó hoạt động tốt nhưng. Làm thế nào tôi có thể chạy này trong kịch bản?


Quan tâm để cho chúng tôi biết $ 0 là gì?
icarus

$ 0 là tên tệp của tập lệnh hiện tại. (src: guidespoint.com/unix/unix-special-variables.htmlm )
Dirk Schumacher

Câu trả lời:


14

$0 bên trong một tập lệnh là tên của tập lệnh.

Tại dấu nhắc, đó là tên của shell, có lẽ là -bashtrong trường hợp của bạn.

dirnameđang coi dấu gạch ngang hàng đầu như giới thiệu một tùy chọn dòng lệnh -b, mà nó không hỗ trợ.

  1. Mã bạn đang sử dụng sẽ không hoạt động tại dấu nhắc. Bạn có thể dán nó vào trong một tập tin và chạy tập tin thay thế.
  2. dirname -- $0Thay vào đó hãy thử : hầu hết các lệnh cho phép bạn viết --để làm cho nó xử lý mọi thứ tiếp theo dưới dạng tham số thay vì tùy chọn. Trong trường hợp này, nó sẽ không khắc phục được sự cố, nhưng nó sẽ làm cho vấn đề trở nên rõ ràng hơn.

nó đã được thực thi, nhưng như bạn đã nói nó đang hoạt động trong dấu nhắc bash nhưng nó không được thực thi trong tệp script thực tế.
Mongrel

Làm cách nào tôi có thể thực thi nó trên kịch bản ....
Mongrel
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.