Sửa lỗi unable to execute shell.sh: No such file or directory

Thông báo lỗi “sudo: unable to execute home/shell.sh: No such file or directory” thường do file shell hoặc thư mục được chỉ định không tồn tại hoặc không thể tìm thấy tuy nhiên nếu bạn chắc cú đúng đường dẫn và đúng tên file nhưng vẫn gặp thông báo lỗi như trên thì có thể làm theo cách dưới đây để chạy.

Dưới đây là một số bước khắc phục sự cố bạn có thể thực hiện:

1. Bạn nên kiểm tra chắc chắn file shell có ở thư mục nào đó hay chưa với câu lệnh sau

ls /home/shell.sh

Nếu tệp tồn tại, nó sẽ được liệt kê; nếu không, bạn sẽ thấy thông báo “No such file or directory”.

Đầu ra nếu file tồn tại như sau

root@222:/home# ls -l /home/shell.sh
-rwxr-xr-x 1 root root 917 Nov 5 16:50 /home/shell.sh

2. Kiểm tra quyền của tệp: Đảm bảo rằng tệp đã được đặt quyền thực thi. Bạn có thể sử dụng lệnh ls -l để kiểm tra quyền:

ls -l /home/shell.sh

Nếu tệp không có quyền thực thi, bạn có thể thêm quyền với lệnh chmod như sau

chmod +x /home/shell.sh

Bạn có thể thử sử dụng đường dẫn đầy đủ với ‘sudo’: Hãy thử sử dụng đường dẫn đầy đủ một cách rõ ràng khi thực thi tập lệnh với sudo:

sudo /bin/bash /home/shell.sh

1 số trường hợp nó sẽ thông báo lỗi như sau

root@222:/home# sudo /bin/bash /home/shell.sh
/home/shell.sh: line 2: $'\r': command not found
/home/shell.sh: line 4: $'\r': command not found
/home/shell.sh: line 6: cd: $'/var/www\r': No such file or directory
: numeric argument required: 1

Nếu bạn gặp trường hợp này thì có thể sử dụng cách sau để fix

Thông báo lỗi bạn gặp phải cho biết rằng tập lệnh có phần cuối dòng kiểu Windows ( \r\n) thay vì phần cuối dòng kiểu Unix ( \n). Ký \rtự (trả về đầu dòng) ở cuối dòng đang gây ra sự cố khi thực thi lệnh trong tập lệnh.

Để khắc phục sự cố này, bạn cần chuyển đổi phần cuối dòng từ kiểu Windows sang kiểu Unix. Điều này có thể được thực hiện bằng cách sử dụng các tiện ích như dos2unix hoặc sed trong Linux.

Sử dụng dos2unix:

Nếu dos2unix được cài đặt trên hệ thống của bạn, bạn có thể sử dụng nó để chuyển đổi phần cuối dòng của tập lệnh:

dos2unix /home/shell.sh

Nếu dos2unix chưa được cài đặt, bạn có thể sử dụng sed:

sed -i 's/\r$//' /home/shell.sh

Cả hai lệnh này sẽ loại bỏ các ký tự trả về đầu dòng khỏi tệp tập lệnh, chuyển đổi các kết thúc dòng sang kiểu Unix.

Sau khi chuyển đổi phần cuối dòng, hãy thử thực thi lại tập lệnh để xem sự cố đã được giải quyết chưa:

sudo /bin/bash /home/shell.sh

Như vậy là xong, hy vọng bài viết sẽ giúp ích cho nhiều người.

Nếu bạn thấy bài viết có ích hãy sao chép link và chia sẻ bài viết
user

Yêu thích Võ thuật và Công nghệ thông tin, thích viết và chia sẽ về 2 lĩnh vực này thế thôi :D

Bài viết liên quan