Mọi lệnh đều thất bại với lệnh không tìm thấy được sau khi thay đổi .bash_profile?


46

Tôi đã cập nhật .bash_profile của mình và thật không may tôi đã thực hiện một vài cập nhật và bây giờ tôi đang nhận được:

env: bash: No such file or directory
env: bash: No such file or directory
env: bash: No such file or directory
env: bash: No such file or directory
env: bash: No such file or directory
-bash: tar: command not found
-bash: grep: command not found
-bash: cat: command not found
-bash: find: command not found
-bash: dirname: command not found
-bash: /preexec.sh.lib: No such file or directory
-bash: preexec_install: command not found
-bash: sed: command not found
-bash: git: command not found

Bash_profile của tôi thực sự kéo theo các tệp .sh khác (nguồn chúng) vì vậy tôi không chắc chắn chính xác sửa đổi nào có thể gây ra điều này.

Bây giờ nếu tôi thậm chí thử và vào danh sách các tệp, tôi nhận được:

>ls
-bash: ls: command not found
-bash: sed: command not found
-bash: git: command not found

Bất kỳ lời khuyên nào về cách theo dõi nguồn gốc của lỗi và làm thế nào để có thể sử dụng thiết bị đầu cuối cho những thứ cơ bản như liệt kê các tập tin, v.v.?


Điều gì xảy ra nếu bạn sử dụng đường dẫn đầy đủ như vậy: / bin / ls? Và những loại thay đổi bạn đang thực hiện?
KP MacGregor

2
Có, dán .bash_profile của bạn
ngày

/ bin / ls liệt kê các tệp, nhưng sau đó tôi thấy 2 dòng này bên dưới nó:-bash: sed: command not found -bash: git: command not found
Blankman

Trong trường hợp vấn đề của bạn là /etc/environment, hãy sử dụng lệnh sau (tính bằng centos 6):ssh -t root@<server-ip> "/bin/bash -c '/bin/mv /etc/environment /tmp/'"
Edenshaw

Câu trả lời:


65

Theo tôi, tại một thời điểm nào đó, bạn đang ghi đè lên PATHbiến môi trường mặc định . Loại lỗi bạn có, biểu thị rằng PATHkhông chứa /bin, trong đó các lệnh trên (bao gồm bash) nằm trong đó.

Ví dụ, nếu bạn làm

PATH=/home/user/bin

thay vì

PATH="$PATH":/home/user/bin

Tôi đã làm điều này tại một thời điểm:export PATH=PATH:EC2_HOME/bin
Blankman

2
Bạn phải sử dụng '$' trong chuỗi PATH thứ hai - export PATH=$PATH:EC2_HOME/bin
Manula Waidyanatha

lạ là làm thế nào 'ec2-description-khu vực' không hoạt động, mặc dù nó nằm trong đường dẫn của tôi, nhưng điều này hoạt động: $ EC2_HOME / bin / ec2-description-khu vực tôi cũng đã tải lại nguồn ....
Blankman

2
Hãy nhìn xem, chúng tôi không biết bạn đang làm gì, những tập tin nào khác bạn đang tìm nguồn cung ứng, những gì trong đó. Và đúng vậy, mỗi khi bạn lấy nguồn tệp, bạn sẽ nối các thứ vào đường dẫn của mình (điều này rất tốt, vì thông thường .bash_profile sẽ chỉ được đọc một lần). Đi qua nó từng cái một và xem điều gì sẽ xảy ra. Ngoài ra, không phải EC2_HOME là một biến? Nếu có, thì bạn nên đặt trước nó $như sau:export PATH=$PATH:$EC2_HOME/bin
Tháng 1

1
Tôi mất đi số lần tôi mắc kẹt trong vấn đề đó và bao nhiêu lần câu trả lời này đã giúp tôi rất nhiều
Herrgott

21

Một cách để bắt đầu gỡ lỗi tập lệnh bash của bạn là bắt đầu một lớp con với tùy chọn -x:

$ bash --login -x

Điều này sẽ cho bạn thấy mọi lệnh và các đối số của nó, được thực thi khi bắt đầu shell đó.

Tùy chọn --login được chỉ định vì .bash_profile được đọc bởi shell đăng nhập. Thông tin thêm về gỡ lỗi tập lệnh bash có thể được tìm thấy ở đây: http://tldp.org/LDP/Bash-Beginners-Guide/html/sect_02_03.html .

Cuối cùng, tôi nghĩ rằng đề xuất của tháng một sẽ có hiệu quả với bạn, nhưng liên kết đó đáng để đọc cho các vấn đề trong tương lai.


got this: -bash: bash: lệnh không tìm thấy
Yassine Qoraiche

10

Tôi có thể đã tìm thấy vấn đề. Nó làm việc cho tôi, và nó có thể làm việc cho bạn ...

Tôi đã mặc định với trình soạn thảo của mình để lưu Windows (LF / CR). Vì tôi sử dụng cả hai hệ thống, nó có vẻ hợp lý. Khi tôi cần phải .bash_profilelàm phiền tôi , tôi nhận ra sau khi bình luận và thử những thứ không có gì hiệu quả. Tôi đã thay đổi lưu của tôi sang định dạng OS X (chỉ CR) và voilà! Không còn "lệnh không tìm thấy" trong thiết bị đầu cuối!

Nó có thể dễ dàng như vậy!


Điều rất tinh tế đã khiến tôi phát điên. Cảm ơn đã thêm câu trả lời này!
samuel.molinski

Đây là những gì tôi đã trải qua! Cảm ơn. Mẹo nhanh đang sử dụng lệnh này để chuyển đổi tệp trên môi trường unix của bạn:$ dos2unix .bash_profile
melwil

Bạn có chắc chắn đó là những gì bạn đã làm? Vì OS X là Unix, nó sử dụng các kết thúc dòng theo kiểu Unix với một ký tự linefeed (LF) duy nhất, không trả về vận chuyển (CR). Hệ điều hành phổ biến duy nhất sử dụng sau này là OS 9 và các ứng dụng Linux / Ubuntu trước đây sẽ khá bối rối.
David Foerster

6

Sau khi tôi không thể chạy lại. ~ / .bash_profile hoặc bất kỳ lệnh thông thường nào như whoami, grep, v.v. Tôi đã tìm ra một cách để chỉ xuất lại các đường dẫn cần thiết:

export PATH=/usr/local/jdk/bin:/usr/kerberos/sbin:/usr/kerberos/bin:/usr/local/sbin:usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin:/opt/cpanel/composer/bin:/usr/local/easy/bin:/usr/local/bin:/usr/X11R6/bin:/root/bin

Điều này sẽ hoạt động trong hầu hết các hệ thống, mặc dù một số trong những đường dẫn này không có trong tất cả các gói Linux. Nó làm việc cho tôi.


4

Tôi nghĩ rằng tôi có thể đã tìm thấy câu trả lời cho vấn đề nếu không phải cho bạn sau đó cho những người khác có vấn đề tương tự. Câu trả lời của tôi cho điều này là tôi không có a .bash_profile.

Vì vậy, tôi đã tìm kiếm trên tất cả các trang web và tôi tìm thấy giải pháp. Về cơ bản là mở thiết bị đầu cuối, gõ touch ~/.bash_profilevà nhấn Enter. Điều đó đã khắc phục vấn đề của tôi. Hy vọng nó làm điều tương tự cho bạn


8
LOL ... -bash: touch: lệnh không tìm thấy
Kumar KL

2

Tôi có cùng một vấn đề như bạn. Tôi không thể sử dụng nhiều lệnh phổ biến ( ls,, vi/vim..) và không thể chỉnh sửa /root/.bashrckhi tôi đăng nhập bằng suroot.

Cuối cùng. Tôi tìm thấy giải pháp cho vấn đề này. Chỉ cần đăng nhập root bằng lệnh:

su -m

Sau đó, bạn có thể sử dụng

vim /root/.bashrc

để chỉnh sửa ĐƯỜNG.

Chúc may mắn!


2

Tôi đã từng gặp vấn đề tương tự. Bạn có thể đã bỏ lỡ một đô la trong khi xuất PATH. Bạn nên mở .bash_profile trong TextEdit. Nếu bạn không thể tìm thấy tệp trong thư mục, hãy nhấn Command + Shift +> để hiển thị các tệp bị ẩn.

Sau đó thực hiện chỉnh sửa cho PATH và sau đó lưu.

Trong thư mục trên Terminal, gõ: source .bash_profile.

Điều này sẽ giải quyết vấn đề.


Cảm ơn nó đã giải quyết vấn đề của tôi, cuối cùng tôi đã có thể chỉnh sửa tệp bash_profile của mình.
Touseef Murtaza

1

Tôi đã có cùng vấn đề y hệt:

Nếu tôi đặt trong lxterminal:

set | grep "jerom/bash"
PATH=/usr/lib/lightdm/lightdm:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games:/home/jerom/bash/

nếu tôi nhập chính xác cùng một lệnh trong tty2, tôi nhận được:

set | grep "jerom/bash"
PATH=/usr/lib/lightdm/lightdm:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games:/home/jerom/bash\r

\ r có nghĩa là cuối dòng của DOS, vì vậy tôi đã mở tệp ~/.bashrcvà thay đổi các đầu của dòng trong Krusader thành kiểu unix. Và nó đã hoạt động rồi !!! :-)

Các EOL của DOS tạo ra các vấn đề nghiêm trọng trong các tập lệnh bash.


1

Tôi đã có cùng một vấn đề ngay bây giờ sau khi tôi thay đổi .bash_profile. Và tôi muốn thay đổi lại nhưng bây giờ tôi không thể, vì tôi đã mất tất cả các lệnh, đặc biệt là lệnh nano và lệnh vim, vì vậy tôi không thể mở .bash_profile bằng lệnh. Và đây .bash_profilelà một tập tin ẩn tôi không thể mở nó bằng Finder.

Vì vậy, tôi cần tìm cách mở tệp .bash_profile. Sau khi thử nhiều cách tôi thấy rằng tôi có thể sử dụng Atom , vì Atom có ​​thể đọc tất cả các tệp trong thư mục dự án, bao gồm các tệp ẩn. Vì vậy, chỉ cần mở Atom và File -> Openchọn <yourusername>thư mục , chọn thư mục và sau đó, tất cả các tệp ẩn đang hiển thị trên chế độ xem dạng cây của Atom, bao gồm .bash_profile!! Sau khi tôi gỡ bỏ sửa đổi cuối cùng và mở lại Terminal, tất cả các lệnh đã trở lại! :)

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.