Ý nghĩa của ./ trước một đường dẫn cụ thể là gì?


25

Tôi đã được yêu cầu chạy cái này:

./yiic message ./app/messages/config.php

Nhưng tôi không hiểu ./ý nghĩa, bất cứ ai có thể làm rõ.

Lưu ý: Tin tôi đi, chúng ta không thể google điều đó. Tôi đã thử:

./ có nghĩa là ./ ubfox

Nó giống như không có gì. :(


3
Trong những trường hợp này, cách tốt nhất là tìm kiếm "dấu gạch chéo", kết quả rất hữu ích này: linfo.org/dot_slash.html
heltonbiker

Câu trả lời:


29

./hoặc chỉ .là tốc ký unix cho thư mục hiện tại.

Bạn cần chỉ định nó khi thư mục hiện tại không có trong PATH của bạn. PATH là danh sách các thư mục được tìm kiếm khi bạn chạy một chương trình. (Bạn có thể xác định nó bằng cách viết echo $PATH.) Nếu một tập tin thực thi không có trong PATH của bạn, để chạy nó, bạn cần phải xác định thư mục nó trong. Bạn có thể làm điều này bằng cách đưa ra đường dẫn đầy đủ đến tập tin, nhưng nếu tập tin là trong thư mục hiện tại, bạn có thể sử dụng ./như tốc ký.

Tương tự, ../hoặc chỉ ..là tốc ký cho thư mục trên thư mục hiện tại.


17
Ai đó nên bao gồm trong câu trả lời của họ tại sao $ PATH không chứa .. Đó là bởi vì tự động sử dụng thư mục hiện tại là một lỗ hổng bảo mật. Hãy tưởng tượng người khác tạo một chương trình, đặt tên nó lsvà bạn cdvào thư mục của anh ấy, sau đó nhậpls
Zan Lynx

1
@Zan Tôi đã luôn tự hỏi điều này, cảm ơn câu trả lời của bạn cho câu hỏi mà không ai hỏi, nhưng ai đó nên có.
crasic

@ZanLynx bình luận / bổ sung tuyệt vời, nó nên được chỉnh sửa thành câu trả lời vì bình luận có thể bị mất.
NSGaga

15

Mỗi thư mục trong dòng lệnh có hai "thư mục đặc biệt" được gọi .... Đây là các tốc ký tương ứng cho thư mục hiện tại và thư mục chứa thư mục hiện tại.

Ví dụ, cd ./more/directory/names chỉ có nghĩa là "bắt đầu tại thư mục hiện tại và tiếp tục trong đường dẫn." Tương tự, lệnh cd ..có nghĩa là, "thay đổi một thư mục lên.

Nếu bạn muốn tên của thư mục hiện tại của bạn, bạn có thể sử dụng pwdlệnh. Ngoài ra, nếu bạn sử dụng -acờ cho ls, bạn có thể thấy hai thư mục đặc biệt này. Đó là, ls -asẽ xuất ra một danh sách bắt đầu bằng ....


bổ sung root45 +1 :)
Rinzwind

4

Những người khác đã giải thích những gì ...có nghĩa là (thư mục hiện tại và thư mục mẹ tương ứng). Điều này áp dụng cho tất cả các tên đường dẫn.

Khi bạn mở một thiết bị đầu cuối, bạn thường bắt đầu trong thư mục chính của bạn: ~(mở rộng đến /home/username). Các đường dẫn dưới đây đều tương đương, cung cấp thư mục làm việc hiện tại của bạn là /home/username:

  • /home/username
  • .
  • ../username
  • ../../home/username
  • ../../../home/username(thư mục mẹ của /vẫn còn /)
  • ./././././. (thư mục hiện tại trong thư mục hiện tại trong ...)
  • ./ (dấu gạch chéo được phép cho các thư mục)
  • /home////username/// (và nhiều dấu gạch chéo)

Đừng không nhầm lẫn ./programvới . program. ./programchạy một tệp trong thư mục hiện tại với tập bit thực thi. . ./programlà một điều bash và thay thế có thể được viết làsource ./program đọc các lệnh bash từ programtệp trong thư mục hiện tại và thực thi chúng trong trình bao hiện tại.

Nếu bạn tự hỏi tại sao bạn chỉ có thể chạy geditthay vì /usr/bin/geditvà không programthay vì ./programhoặc /home/username/program, hãy xem câu hỏi liên quan:


3

Nó có nghĩa là bắt đầu từ current directory path .

Giả sử bạn có một cái pathnhư thế này:

/usr/ /usr/bin/ /usr/local/bin

và bên trong /usr/bin/có một thực thi được gọi làyiic .

Nếu bạn phát hành yiicnó sẽ bắt đầu một trong /usr/bin/.

Bằng cách phát hành, ./yiicbạn báo cho hệ thống xem bên trong thư mục hiện tại để thực thi.


Ok ... nhưng tôi vẫn không nhận được. Hãy nói rằng tôi có yiic bên trong /home/mysuser/và tôi điều hướng đến đó bằng cách sử dụng cd /home/myuser. Khi ở bên trong, tôi tin rằng chỉ cần làm yiic, nó sẽ hoạt động vì tôi đã gọi trong khi trên thư mục đó. Nhưng ông nói lệnh không nộp. Nếu tôi làm như vậy và tôi sử dụng ./ thì nó sẽ chạy đúng ... Bạn có thể vui lòng làm rõ thêm một chút không?
MEM

@frabjous như đã trả lời bình luận này là tốt.
MEM

Không! nó sẽ luôn luôn tìm trong chỉ thị PATH trừ khi bạn bảo nó sử dụng thư mục hiện tại (bằng cách sử dụng ./). Nhìn vào câu trả lời của user45: .là một tệp đặc biệt trong một thư mục mà bạn có thể thấy khi thực hiện ls -latrong thư mục;)
Rinzwind
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.