.bashrc перезаписан, но все еще является источником - как его можно восстановить?

19

Обычно, когда я нахожу команду, которую хочу назвать псевдонимом, я передаю ее моему .bashrc следующим образом:

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

Там может быть лучший способ сделать это. Но в любом случае, сейчас я переписал весь файл .rc, используя один шеврон. Однако, поскольку .bashrc все еще актуален, он по-прежнему принимает мои старые псевдонимы (пока, конечно). Так есть ли способ его восстановить?

ixtmixilix
источник
6
echo "set -o noclobber" > ~/.bashrc(не забудьте добавить вторую угловую скобку)
hhaamu
3
В следующий раз: Советы по установлению контроля над исходным кодом
Жиль "ТАК, перестань быть злым"
1
На будущее: сделайте резервную копию ваших файлов, чтобы это не было проблемой. Вы также можете создать отдельный файл для этих быстрых надстроек и найти его где-нибудь, как в .bashrc. Обеспечивает базовую сеть безопасности, и вы можете легко включать и выключать ее по мере необходимости.
Джо
2
Вы можете сохранить свои текущие настройки, но если у вас .bashrcесть какая-либо логика, которая зависит от локальных переменных, таких как хост, пользователь и т. Д., Которые, вероятно, невозможно восстановить. Реальный ответ - восстановить из вашей последней резервной копии. У вас есть последнее право резервного копирования?
jw013

Ответы:

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

Все эти команды выводят определения, готовые для повторного использования, вы можете перенаправить их выходы непосредственно на новую ~/.bashrc.

Все списки будут содержать много элементов, определенных в других местах, например /etc/profileи /etc/bash_completion. Таким образом, вам придется очистить список вручную.

manatwork
источник
3
Я бы также предложил начать с настроек .bashrcпо умолчанию для вашей системы. В Debian он есть /etc/skel, или вы можете создать нового пользователя, чтобы получить нового .bashrc.
энзотиб
1
setи declare(без аргументов) отображать все это сразу.
rozcietrzewiacz
@enzotib, отличная идея. я действительно
задавался
1

typeset -f > .bashrc должен сделать это, при условии, что все, что вы имели, были псевдонимами.

Пол Томблин
источник
Команда functionsне существует для меня 4.2.10(2)-release. Вы, наверное, имеете в виду declare -f.
Крис Даун
На самом деле, я имел в виду «typeset -f»
Пол Томблин,