Điểm:4

Tại sao hệ vỏ không tìm thấy một tệp bên trong thư mục hiện tại chỉ bằng tên của nó?

lá cờ cn

Tôi đã tải xuống VS Code's .deb tập tin cho Ubuntu. tôi đổi tên nó thành vs.deb.

Sau đó, tôi vào thư mục tải xuống của mình:

cd ~/Tải xuống

Và bây giờ tôi đang ở đây, tôi cố gắng cài đặt nó:

cài đặt sudo apt vs.deb

Và đây là những gì tôi nhận được:

Đang đọc danh sách gói... Xong   
Xây dựng cây phụ thuộc          
Đang đọc thông tin trạng thái... Xong   
E: Không thể định vị gói vs.deb   
E: Không thể tìm thấy bất kỳ gói nào bằng global 'vs.deb'

Nhưng khi tôi cài đặt nó bằng cách sử dụng ./vs.deb, sau đó nó được cài đặt:

sudo apt cài đặt ./vs.deb

Tại sao Linux không chấp nhận tên của tệp trong cùng thư mục mà không yêu cầu đường dẫn tương đối?

David avatar
lá cờ cn
Thư mục hiện tại có được xác định trong bất kỳ câu lệnh PATH nào không? Tôi nghĩ không phải do đó bạn cần ./ Đây là hành vi được nhiều người biết đến và không phải là một hành vi ngu ngốc.
Kulfy avatar
lá cờ mz
Điều này có trả lời câu hỏi của bạn không? [Làm cách nào để cài đặt tệp .deb qua dòng lệnh?](https://askubuntu.com/questions/40779/how-do-i-install-a-deb-file-via-the-command-line) Trích dẫn từ [câu trả lời của Braiam](https://askubuntu.com/a/769542): *"Ngay cả khi bạn đang ở trên thư mục có gói, bạn cần cung cấp đường dẫn bằng cách sử dụng `./` ở đầu"*
guiverc avatar
lá cờ cn
Bạn đang cố gắng cài đặt một tập tin; vì vậy một đường dẫn là bắt buộc. Lệnh của bạn không có đường dẫn là tải xuống và cài đặt tên gói mà bạn đã cung cấp (sẽ an toàn hơn nếu không đưa ra các giả định rằng đó có thể là một tệp mà là một gói trong nguồn được phê duyệt).
Peter Cordes avatar
lá cờ fr
@David: Nếu bạn đang nói về biến môi trường `PATH`, ví dụ: `/usr/local/bin:/bin:...` thì không, sẽ vô nghĩa nếu `apt` tìm kiếm `$PATH` cho các tệp `.deb` được cung cấp dưới dạng đối số. Người hỏi đã đưa ra một giả định sai về vỏ có liên quan. Nhận xét của bạn có thể gây hiểu lầm cho những người mới bắt đầu không nhận ra rằng nó không thực sự áp dụng; Tôi muốn đề nghị xóa nó.
Điểm:19
lá cờ cn

Những gì bạn trải nghiệm không liên quan đến trình bao, mà liên quan đến cách thức đúng cách lệnh diễn giải các đối số trên dòng lệnh.

Nó chủ yếu nhằm mục đích cài đặt các gói từ kho phần mềm. Theo mặc định, một đối số cho đúng cách có nghĩa là tên của một gói trong các nguồn phần mềm. Thông điệp:

E: Không thể định vị gói vs.deb

rõ ràng chỉ ra rằng một gói vs.deb không tồn tại trong các nguồn phần mềm.

Vẫn, đúng cách cho phép bạn cài đặt trực tiếp ứng dụng đã tải xuống .deb tệp gói và giải quyết các phụ thuộc cho nó. Bạn phải cung cấp đường dẫn tệp rõ ràng để cho biết bạn muốn cài đặt .deb tập tin. ./vs.deb đã chỉ ra một đường dẫn tệp: ./ có nghĩa là thư mục hiện tại, vì vậy apt sẽ tìm thấy vs.deb tập tin trong thư mục hiện tại.

Trên thực tế, Shell không bao giờ "tìm thấy" một tệp. Shell chỉ chuyển các đối số cho ứng dụng và việc diễn giải các đối số này tùy thuộc vào ứng dụng. Nhiều nhất, vỏ mở rộng (ví dụ: thay thế * với tất cả tên tệp hoặc ~ với đường dẫn đầy đủ của thư mục nhà của bạn) hoặc thay thế biến (ví dụ: $HOME được thay thế bằng nội dung của biến đó).

chrylis -cautiouslyoptimistic- avatar
lá cờ er
Có thể cho rằng, mở rộng cú đúp _does_ đủ điều kiện là "tìm" các tệp.
Peter Cordes avatar
lá cờ fr
Tiền thân của `apt`, `apt-get`, không bao giờ có thể lấy `.deb` làm tùy chọn dòng lệnh, chỉ có tên gói; bạn phải sử dụng `dpkg -i` để cài đặt tệp .deb. Vì vậy, có tiền lệ lịch sử đối với các công cụ gói cấp cao hơn của Debian *không* diễn giải các đối số dưới dạng đường dẫn, ít nhất là không theo mặc định.
lá cờ cn
@ chrylis-cautiiouslyoptimistic- Mở rộng cú đúp không thực hiện bất kỳ điều gì liên quan đến tệp, đó là một chuyển đổi hoàn toàn bằng văn bản. Mặt khác, mở rộng ký tự đại diện sẽ tìm kiếm các tệp phù hợp.

Đăng câu trả lời

Hầu hết mọi người không hiểu rằng việc đặt nhiều câu hỏi sẽ mở ra cơ hội học hỏi và cải thiện mối quan hệ giữa các cá nhân. Ví dụ, trong các nghiên cứu của Alison, mặc dù mọi người có thể nhớ chính xác có bao nhiêu câu hỏi đã được đặt ra trong các cuộc trò chuyện của họ, nhưng họ không trực giác nhận ra mối liên hệ giữa câu hỏi và sự yêu thích. Qua bốn nghiên cứu, trong đó những người tham gia tự tham gia vào các cuộc trò chuyện hoặc đọc bản ghi lại các cuộc trò chuyện của người khác, mọi người có xu hướng không nhận ra rằng việc đặt câu hỏi sẽ ảnh hưởng—hoặc đã ảnh hưởng—mức độ thân thiện giữa những người đối thoại.