.bashrc ghi đè nhưng vẫn có nguồn gốc - làm thế nào để phục hồi?


19

Thông thường khi tôi tìm thấy một lệnh tôi muốn đặt bí danh, tôi lặp lại nó với .bashrc của mình như vậy:

[up button pressed to last command, then line edited so that it reads]
$echo "command-i-just-did" >> ~/.bashrc

Có thể có một cách tốt hơn để làm điều này. Nhưng dù sao, bây giờ tôi đã ghi đè lên toàn bộ tệp .rc bằng cách sử dụng một chevron. Tuy nhiên, vì .bashrc vẫn còn hiện hành, nên nó vẫn chấp nhận các bí danh cũ của tôi (tất nhiên là bây giờ). Vậy có cách nào để phục hồi nó?


6
echo "set -o noclobber" > ~/.bashrc(nhớ thêm khung góc thứ hai)
hhaamu


1
Trong tương lai: Sao lưu các tệp của bạn để điều này không thành vấn đề. Bạn cũng có thể xem xét việc tạo một tệp riêng cho các tiện ích bổ sung nhanh này và tìm nguồn ở đâu đó như trong .bashrc. Cung cấp một mạng lưới an toàn cơ bản và bạn có thể dễ dàng bật và tắt khi cần thiết.
Joe

2
Bạn có thể lưu cài đặt hiện tại của mình nhưng nếu bạn .bashrccó bất kỳ logic nào trong đó phụ thuộc vào các biến cục bộ như máy chủ, người dùng, v.v. thì có lẽ không thể phục hồi được. Câu trả lời thực sự là khôi phục từ bản sao lưu gần đây nhất của bạn. Bạn có một bản sao lưu gần đây phải không?
jw013

Câu trả lời:


22
  • alias không có tham số đầu ra các định nghĩa của các bí danh hiện được xác định.
  • declare -f đưa ra các định nghĩa của các chức năng hiện được xác định.
  • export -p đưa ra các định nghĩa về các biến được xác định hiện tại.

Tất cả các định nghĩa đầu ra lệnh đã sẵn sàng để được sử dụng lại, bạn có thể chuyển hướng đầu ra của chúng trực tiếp sang mới ~/.bashrc.

Tất cả các danh sách sẽ chứa rất nhiều yếu tố được xác định ở nơi khác, ví dụ /etc/profile/etc/bash_completion. Vì vậy, bạn sẽ phải làm sạch danh sách bằng tay.


3
Tôi cũng sẽ đề nghị bắt đầu từ mặc định .bashrccho hệ thống của bạn. Trong Debian, nó nằm trong /etc/skelhoặc bạn có thể tạo một người dùng mới, nếu có thể, để có được một thương hiệu mới .bashrc.
enzotib

1
setdeclare(không có đối số) hiển thị tất cả điều này cùng một lúc.
rozcietrzewiacz

@enzotib, ý tưởng tuyệt vời. tôi đã tự hỏi .bashrc mặc định sẽ nằm ở đâu ...
ixtmixilix

1

typeset -f > .bashrc nên làm điều đó, cung cấp tất cả những gì bạn có là bí danh.


Các functionslệnh không tồn tại đối với tôi về 4.2.10(2)-release. Bạn có thể có nghĩa declare -f.
Chris Xuống

Thật ra, ý tôi là "typet -f"
Paul Tomblin
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.