Điều này thực sự rất lạ. Các bước bạn mô tả nên đã làm việc, do đó, phải có một số lỗi nhỏ trong môi trường của bạn hoặc thực hiện các bước đó. Có một số điều bạn có thể làm để giúp chẩn đoán này:
KIỂM TRA CHO ký tự điều khiển
Những gì bạn đã ghi nhận có vẻ tốt đẹp, miễn là không có lỗi chính tả hoặc ký tự điều khiển. Bạn nên kiểm tra bằng cách nhập:
cat -vt ./test
Nếu bạn thấy bất kỳ văn bản bổ sung không mong muốn nào có thể giải thích được sự cố. Ví dụ: "^ M" ở cuối dòng sẽ cho biết rằng trình chỉnh sửa của bạn đã lưu tệp ở định dạng Windows.
hồi phục lại không đáng tin cậy FILE
Để tạo một tiếng-tốt ./test2
, sao chép-dán các lệnh dưới đây:
`which bash`
printf "#\!`which sh`\necho HELLO\n" > ./test2
chmod +x ./test2
./test2
exit
KIỂM TRA MÀ COMMAND KHÔNG THỂ TÌM THẤY
Nếu bạn gõ .. .
./ajio
... bạn có nhận được chính xác ...
./ajio: Command not found.
... như bạn đã mô tả với ./test
? Tôi chỉ tạo nên tên ajio nên nó không tồn tại. Nếu chúng phù hợp thì nó không thực sự cho bạn biết điều gì mới mẻ. Nhưng nếu các thông báo khác nhau, điều đó xác nhận rằng ./test
ít nhất đã được tìm thấy và có thể thực thi được.
Cũng có thể phiên bản sh
của bạn đang cố gắng thông báo cho bạn rằng không thể tìm thấy test
nhưng trong khi chạy test
một số lệnh mà trình chạy thử không thể tìm thấy. Đó không phải là lệnh echo, như với hầu hết các triển khai shell sẽ là một lệnh nội bộ, được thực hiện bên trong trình bao. Tuy nhiên, shell có thể chạy một script khởi tạo có chứa một dòng xác định một lệnh mà nó không thể chạy. Nếu bạn chạy man sh
, nó sẽ cho bạn biết về tất cả các tệp khởi động khác nhau mà trình bao của bạn có thể thử chạy. Đây có thể khác với những thứ được sử dụng khi bạn khởi động trình bao tương tác. Nhưng, như một người mới bắt đầu, nó có thể được khó khăn kiểm tra tính hợp lệ của những kịch bản. Có thể là bất kỳ tùy chỉnh không có thật nào sẽ là quá trình khởi động shell cá nhân của bạn, và không ảnh hưởng đến toàn bộ cài đặt Linux, do đó hãy chạy ls -ld ~/.*
để liệt kê các tệp ẩn trong thư mục chính của bạn và kiểm tra bất kỳ tệp nào giống như tệp khởi động shell (ví dụ ~/.bashrc, ~/.profile, ~/.bash_login). Kiểm tra bất kỳ lệnh nào mà chúng chỉ định có thể được tìm thấy và lệnh được gọi sau khi biến đường dẫn được đặt để bao gồm vị trí của chúng.
so với KHÁC SHELL
Nếu có một vấn đề với các/bin/sh cài đặt/khởi động, sau đó bạn có thể có thể để vượt qua nó bằng cách gọi vỏ khác. Thử...
which zsh
which tcsh
which csh
... và nếu một trong nhiều những tìm thấy một vỏ thay thế cho bạn, chỉnh sửa hoặc tạo tập tin xác định vỏ đó, ala ...
#!/bin/csh
echo HELLO
... sau đó chmod +x
nó và ./
-chạy nó. Nếu điều đó làm việc, thì bạn biết vấn đề của bạn là/bin/sh cụ thể.
Liệu 'ls/bin/sh' hiển thị một tập tin với các bit thực thi kích hoạt? – Ether
Khi bạn thêm dấu gạch chéo còn thiếu, bạn vẫn gặp sự cố? Là thư mục bạn đang ở trong gắn kết với bất kỳ (rất) tùy chọn đặc biệt? –