2011-11-24 35 views
5

Tôi đã chỉnh sửa .bashrc tệp và các tệp init khác và có vẻ như tôi đã để lại một vài đoạn mã hoặc hai đoạn mã đang gây ra một vài lỗi tại dấu nhắc (ví dụ: thiếu tệp), nhưng tôi không thể tìm thấy chúng.Làm cách nào để gỡ lỗi dấu nhắc bash?

Làm cách nào để gỡ lỗi lời nhắc để tìm ra những init script mà tôi đã vô tình tấn công?

+0

Trên một mức độ thực tế, có một điều bạn có thể làm một cách nhanh chóng sẽ có thêm một người sử dụng giả để máy tính của bạn và sau đó phân biệt các tệp được tạo trong tài khoản đó với các tệp trong tài khoản của bạn.Một kế hoạch phức tạp hơn sẽ là tìm ra nơi mà các giá trị mặc định đến từ và khác với các kế hoạch đó. Tất nhiên nếu bạn sửa đổi các tập tin trên toàn hệ thống, bạn sẽ cần phải tìm cách để lấy các tập tin ra khỏi gói cài đặt. –

Trả lời

9

Hầu hết các trình bao đều có cờ gỡ lỗi hiển thị các lệnh đang được thực hiện. Bash thậm chí có thể có một lệnh hiển thị một lệnh trước khi mở rộng các biến và sau đó. Bạn đã thử kiểm tra (tôi tin) cờ -x hoặc -X và xem họ có hiển thị thông tin bạn đang tìm kiếm hay không.

Bạn có thể đặt chúng làm thứ đầu tiên trong tệp rc (tệp toàn cục nhất) hoặc chỉ chuyển nó xuống lệnh bash bằng cách gọi nó từ trình bao khác. Trên thực tế, nếu bạn gọi bash từ một trình bao khác, bạn cũng có thể sử dụng lệnh script để ghi lại mọi thứ bạn thấy và thực hiện vào tệp, điều này giúp phân tích hậu kỳ dễ dàng hơn nhiều.

+0

Sau khi bán các công cụ vào một tập tin, một vài grep đơn giản kéo mọi thứ tôi cần. – fny

0

Hãy thử để xem nhanh chóng, nơi bạn đã xác định - có lẽ nó trong một số dấu chấm tập tin trong thư mục chính của bạn:

grep PS1 ~/.* 

Bạn có thể thấy giá trị hiện tại của cửa sổ bằng cách chỉ cần in nó:

echo $PS1 

HTH

0

Kiểm tra tệp .bash_history trong thư mục chính của bạn để tìm hiểu các lệnh bạn đang chạy. Nếu bạn sử dụng các lệnh như vi filename để mở tập lệnh init, nó sẽ tìm thấy chúng trong lịch sử lệnh.

8

Thử gọi bash bằng cờ -x, sau đó tìm nguồn cung ứng .bashrc hoặc .bash_profile hoặc bất kỳ thứ gì bạn đang sử dụng. Đó phải được rườm rà, đủ để thấy vấn đề của bạn

ví dụ:

bash -x 
source .bashrc 
3

Cách dễ nhất để có được một trạng thái ban đầu sạch là để SSH vào máy chủ hiện tại của bạn, nhưng thay vì để cho SSH khởi động shell của bạn với mặc định cài đặt, bạn cung cấp một lệnh rõ ràng ngăn không cho đọc .bashrc.

ssh -tt localhost /bin/bash --norc 

Các -tt lực lượng SSH để phân bổ một TTY, đó là những gì thường xảy ra khi bạn mở một kết nối vỏ, nhưng là không mặc định khi chạy một lệnh rõ ràng.

--norc ngăn không cho bash đọc tệp cài đặt của bạn (vì chúng tôi muốn tự làm điều đó).

Bây giờ bạn sẽ có dấu nhắc bash, trong một môi trường sạch. Đây là hữu ích cho việc kiểm tra những gì biến được thiết lập để trước .bashrc chạy của bạn, vv Cho phép truy tìm và nguồn của bạn .bashrc:

set -x # Enable tracing 
source .bashrc 
Các vấn đề liên quan