Các lệnh cơ bản không hoạt động tức là: -bash: ls: Không có tệp hoặc thư mục như vậy


8

Tôi mới sử dụng Unix và trong quá trình cài đặt chương trình cho luận án của mình, tôi phải chơi với PATH cho các lệnh Unix cơ bản như ls. Mỗi lần tôi gõ lsvà tên thư mục tôi muốn liệt kê các tập tin, nó sẽ xuất hiện dưới dạng:

-bash: ls: No such file or directory

Tôi có thể làm gì để sữa nó? Bất kỳ trợ giúp là rất rất nhiều đánh giá cao!


Lý do tôi không làm việc nhưng cd đã ghi lại trong câu trả lời của tôi
Michael Durrant

Câu trả lời:


23

Đặt lại đường dẫn của bạn ngay bây giờ (tức là trước bất kỳ loại đăng xuất nào) với:

export PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin

Nó không được khôi phục PATH đầy đủ của bạn nhưng các tiện ích cơ bản sẽ có sẵn một lần nữa.

Đây là một ví dụ về loại điều xảy ra:

Bạn đã có một biến PATH (được gọi là $ PATH khi đọc từ nó)

Cái gì đó như:

$ echo $PATH
/home/durrantm/.rvm/gems/ruby-2.0.0-p247/bin:/home/durrantm/.rvm/gems/ruby-2.0.0-p247@global/bin:/home/durrantm/.rvm/rubies/ruby-2.0.0-p247/bin:/home/durrantm/.rvm/bin:/h
ome/durrantm/.autojump/bin:/usr/local/heroku/bin:/home/durrantm/bin:/home/durrantm/.autojump/bin:/usr/local/heroku/bin:/home/durrantm/.autojump/bin:/usr/local/heroku/bin:
/home/durrantm/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games:/home/durrantm/.rvm/bin:/home/durrantm/.rvm/bin:/home/durrantm
/.rvm/bin

Bạn đã cố gắng thêm vào nó, nhưng bạn đã vô tình sử dụng

PATH=PATH:other_dir

thay vì

PATH=$PATH:other_dir

và kết quả là con đường của bạn đã trở thành

PATH:other_dir

và sau đó tất cả các tiện ích như ls và sed không hoạt động

Bạn có thể sửa tập tối thiểu bằng cách thực hiện

export PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin

Điều này đặc biệt hữu ích nếu các tệp chấm đăng nhập đang làm rối PATH
của bạn Kiểm tra các tệp .bashrc và / hoặc .bash_profile của bạn để biết bất kỳ thay đổi PATH nào.

Như Greg nói rằng bạn cũng có thể chỉ cần đăng xuất (hoặc tùy chọn an toàn hơn, mở một cửa sổ mới trong trường hợp mở một cửa sổ mới bị hỏng!) Và sau đó lặp lại $ PATH từ một cửa sổ mới.

Điều tương tự xảy ra khi bạn làm path=không có giá trị. Nó 'xóa sạch' đường dẫn hiện tại của bạn và gây ra những vấn đề này.

Về lý do , khi bạn gặp những vấn đề này, cd hoạt động và ls không hoạt động:

  • cd là một lệnh "tích hợp" không cần PATH của bạn để tìm chương trình
  • ls là một chương trình và cần sử dụng PATH để tìm vị trí của nó.

Bạn có thể thấy điều này với:

$ builtin ls
-bash: builtin: ls: not a shell builtin
14:47:29 mdurrant C02MH2DQFD58 /Users/mdurrant
$ builtin cd
14:47:31 mdurrant C02MH2DQFD58 /Users/mdurrant
$

Không có lỗi có nghĩa là lệnh là nội dung

Trước khi "di chuyển" (hoặc đăng xuất) ...

Đảm bảo kiểm tra mọi thay đổi ( đặc biệt là các thay đổi đối với .bashrc, .profile, v.v. đang thực hiện các lệnh cài đặt PATH) bằng cách mở một cửa sổ mới hoặc thực hiện nguồn ~ / .bash_profile để chạy nó. Đó cũng là một cách tốt để giữ cho cửa sổ và trình chỉnh sửa (khi bạn thay đổi tệp .bash_profile) mở trong trường hợp các thay đổi của bạn không hoạt động và ngăn bạn mở các cửa sổ mới để chỉnh sửa tệp. Mặc dù bạn vẫn có thể sử dụng TextEdit hoặc một trình soạn thảo đơn giản khác để thay đổi tệp (ví dụ như tránh dòng lệnh và vi). Cẩn thận KHÔNG khởi động lại nếu / khi vỏ của bạn bị hỏng hoặc thậm chí bạn không thể đăng nhập. và điều đó thực sự rất tệ (không có tài khoản khác sutừ bạn bị hos). Đã xảy ra với tôi!

Tuy nhiên, bản sửa lỗi 'tài khoản bổ sung' của tôi cũng là một trình bảo vệ cuộc sống và rất được khuyến khích cho tất cả mọi người (hãy thực hiện ngay bây giờ!)


Chào! Cảm ơn rất nhiều! Tôi chỉ thiết lập lại đường dẫn, nhưng khi tôi mở một cửa sổ terminal mới thì điều tương tự xảy ra. Sau đó tôi đã làm thêm ~ / .bash_profile để kiểm tra mọi thay đổi và nó cho thấy điều này: xuất PATH =
Mariaa

Điều đó có bình thường không?
Mariaa

Ngoài ra, khi tôi lặp lại $ PATH tôi không nhận được kết
quả..không

@Mariaa làm thế nào để bạn thiết lập lại đường dẫn cho biết tệp hoặc lệnh.
jgr208

1
Đảm bảo kiểm tra mọi thay đổi bằng cách mở một cửa sổ mới hoặc thực hiện source ~/.bash_profileđể chạy nó. Đó cũng là một cách tốt để giữ cho cửa sổ và trình chỉnh sửa (nơi bạn đang thay đổi tệp .bash_profile) mở trong trường hợp thay đổi của bạn không hoạt động và ngăn bạn mở các cửa sổ mới để chỉnh sửa tệp. Mặc dù bạn vẫn có thể sử dụng TextEdit hoặc một trình soạn thảo đơn giản khác để thay đổi tệp.
Michael Durrant

8

Những thay đổi bạn đã thực hiện PATHcó khả năng là tạm thời. Đóng vỏ bạn đang ở exitvà mở lại nó.

Trong trường hợp bạn đã chỉnh sửa một tệp đặt các PATHshell mới được mở, hãy chỉ định đường dẫn đầy đủ tới các lệnh để sửa bất cứ điều gì bạn đã thay đổi (ví dụ /usr/bin/vim:).


Xin chào! Cảm ơn (: Tôi đã thử làm điều này nhưng nó không hoạt động. Tôi đoán tôi thực sự đã làm điều gì đó kỳ lạ. Tôi nhớ sử dụng vim để làm gì đó với PATH và sau đó mọi thứ đã bị rối tung. Ugh, ước gì tôi biết thêm ngôn ngữ máy tính để sắp xếp thứ này!
Mariaa

/usr/binhoặc bất kỳ binthư mục trong đường dẫn của bạn? @Mariaa
jgr208

jgr208: đây là Đường dẫn của tôi: / usr / local / sbin: / usr / local / bin: / usr / sbin: / usr / bin: / sbin: / bin
Mariaa

@Mariaa bạn đã không xóa bin hoặc bất cứ điều gì và bạn đã đọc quyền truy cập vào các tập tin chính xác?
jgr208

Tuy nhiên, tôi chỉ có thể thấy điều này hoặc sử dụng bất kỳ lệnh nào khi tôi nhập PATH = / usr / local / sbin: / usr / local / bin: / usr / sbin: / usr / bin: / sbin: / bin này trong một thiết bị đầu cuối mới window..như vậy tôi không thể sử dụng bất kỳ lệnh nào. Không nhận ra họ: S
Mariaa
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.