.bashrc перезаписаний, але все ще джерело - як його відновити?


19

Зазвичай, коли я знаходжу команду, яку хочу псевдонім, я повторюю її моєму .bashrc так:

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

Можливо, є кращий спосіб зробити це. Але все одно, я просто перезаписав весь файл .rc, використовуючи один шеврон. Однак, оскільки .bashrc все ще актуальний, він все ще приймає мої старі псевдоніми (поки що, звичайно). То чи існує спосіб її відновити?


6
echo "set -o noclobber" > ~/.bashrc(не забудьте додати другу кутову дужку)
hhaamu


1
На майбутнє: створити резервну копію файлів, щоб це не проблема. Ви також можете створити окремий файл для цих швидких доповнень та знайти його десь, як у .bashrc. Забезпечує основну безпечну мережу, і ви можете легко включати та вимикати її за необхідності.
Джо

2
Ви можете зберегти свої поточні налаштування, але якщо у вас .bashrcбула якась логіка, яка залежала від локальних змінних, таких як хост, користувач тощо, що, ймовірно, неможливо відновити. Справжня відповідь - відновити з останньої резервної копії. У вас є нещодавнє резервне копіювання?
jw013

Відповіді:


22
  • alias без параметра виводить визначення визначених на даний момент псевдонімів.
  • declare -f виводить визначення визначених в даний час функцій.
  • export -p виводить визначення поточно визначених змінних.

Усі ці команди виводять визначення, готові до повторного використання, ви можете перенаправити їх результати безпосередньо на нове ~/.bashrc.

Усі списки містять безліч елементів, визначених в інших місцях, наприклад, /etc/profileі /etc/bash_completion. Тож вам доведеться очищати список вручну.


3
Я б також запропонував почати з системи за замовчуванням .bashrcдля вашої системи. У Debian він є /etc/skel, або ви можете створити нового користувача, якщо зможете, щоб отримати абсолютно нового .bashrc.
enzotib

1
setі declare(без аргументів) відображати все це одразу.
rozcietrzewiacz

@enzotib, чудова ідея. Мені було цікаво, де буде проживати .bashrc за замовчуванням ...
ixtmixilix

1

typeset -f > .bashrc Ви повинні це зробити, якщо все, що у вас було, - псевдоніми.


functionsКоманда не існує для мене на 4.2.10(2)-release. Ви, мабуть, маєте на увазі declare -f.
Кріс Даун

Власне, я мав на увазі "набір -f"
Пол Томблін
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.