.bashrc ditimpa tetapi masih bersumber - bagaimana bisa dipulihkan?


19

Biasanya ketika saya menemukan perintah yang ingin saya alias, saya gema ke .bashrc saya seperti ini:

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

Mungkin ada cara yang lebih baik untuk melakukan ini. Tapi bagaimanapun, baru saja saya menimpa seluruh file .rc dengan menggunakan chevron tunggal. Namun, karena .bashrc masih terkini, masih menerima alias lama saya (untuk sekarang tentu saja). Jadi adakah cara untuk memulihkannya?


6
echo "set -o noclobber" > ~/.bashrc(ingat untuk menambahkan braket sudut kedua)
hhaamu


1
Untuk masa depan: Cadangkan file Anda jadi ini bukan masalah. Anda mungkin juga mempertimbangkan untuk membuat file terpisah untuk add-on cepat ini dan mengambilnya di suatu tempat seperti di .bashrc. Menyediakan jaring pengaman dasar dan Anda dapat dengan mudah menyalakan dan mematikannya seperlunya.
Joe

2
Anda dapat menyimpan pengaturan Anda saat ini tetapi jika Anda .bashrcmemiliki logika di dalamnya yang bergantung pada variabel lokal seperti host, pengguna, dll. Yang mungkin tidak dapat dipulihkan. Jawaban sebenarnya adalah memulihkan dari cadangan terbaru Anda. Anda memang memiliki cadangan baru-baru ini?
jw013

Jawaban:


22
  • alias tanpa parameter output definisi alias yang saat ini didefinisikan.
  • declare -f menampilkan definisi fungsi yang saat ini didefinisikan.
  • export -p menampilkan definisi dari variabel yang saat ini didefinisikan.

Semua perintah output definisi siap untuk digunakan kembali, Anda dapat mengarahkan output mereka langsung ke yang baru ~/.bashrc.

Semua daftar akan berisi banyak elemen yang didefinisikan di tempat lain, misalnya /etc/profiledan /etc/bash_completion. Jadi, Anda harus membersihkan daftar secara manual.


3
Saya juga menyarankan untuk memulai dari default .bashrcuntuk sistem Anda. Di Debian ada di /etc/skel, atau Anda dapat membuat pengguna baru, jika Anda bisa, untuk mendapatkan merek baru .bashrc.
enzotib

1
setdan declare(tanpa argumen) menampilkan semua ini sekaligus.
rozcietrzewiacz

@enzotib, ide bagus. saya bertanya-tanya di mana default .bashrc akan berada ...
ixtmixilix

1

typeset -f > .bashrc harus melakukannya, asalkan semua yang Anda miliki adalah alias.


The functionsperintah tidak ada bagi saya di 4.2.10(2)-release. Anda mungkin berarti declare -f.
Chris Down

Sebenarnya, yang saya maksud adalah "typeset -f"
Paul Tomblin
Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.