.bashrc sobrescrito mas ainda originário - como pode ser recuperado?


19

Normalmente, quando encontro um comando que quero alias, faço o eco para o meu .bashrc assim:

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

Pode haver uma maneira melhor de fazer isso. Mas, de qualquer maneira, agora eu sobrescrevi o arquivo .rc inteiro usando uma única divisa. No entanto, como o .bashrc ainda é atual, ainda está aceitando meus antigos pseudônimos (por enquanto, é claro). Então, existe uma maneira de recuperá-lo?


6
echo "set -o noclobber" > ~/.bashrc(lembre-se de adicionar uma segunda cantoneira)
hhaamu


1
Para o futuro: faça backup dos seus arquivos para que isso não seja um problema. Você também pode criar um arquivo separado para esses complementos rápidos e buscá-lo em algum lugar como o .bashrc. Fornece uma rede de segurança básica e você pode facilmente ligar e desligar, conforme necessário.
Joe

2
Você pode salvar suas configurações atuais, mas se você .bashrctiver alguma lógica que dependa de variáveis ​​locais como host, usuário etc., isso provavelmente é irrecuperável. A resposta real é restaurar do seu backup mais recente. Você tem um backup recente, certo?
jw013

Respostas:


22
  • alias sem parâmetro gera as definições de aliases definidos atualmente.
  • declare -f gera as definições das funções definidas atualmente.
  • export -p gera as definições das variáveis ​​definidas atualmente.

Todos esses comandos têm definições de saída prontas para serem reutilizadas. Você pode redirecionar suas saídas diretamente para uma nova ~/.bashrc.

Todas as listas conterão muitos elementos definidos em outro lugar, por exemplo, /etc/profilee /etc/bash_completion. Então você terá que limpar a lista manualmente.


3
Eu também sugeriria iniciar do padrão .bashrcpara o seu sistema. No Debian está /etc/skel, ou você pode criar um novo usuário, se puder, para obter uma nova marca .bashrc.
enzotib

1
sete declare(sem argumentos) exibem tudo isso de uma vez.
rozcietrzewiacz

@enzotib, ótima idéia. Eu me perguntei onde o .bashrc padrão residiria ...
ixtmixilix 15/11/11

1

typeset -f > .bashrc deve fazê-lo, fornecendo tudo o que você tinha eram aliases.


O functionscomando não existe para mim 4.2.10(2)-release. Você provavelmente quer dizer declare -f.
Chris Down

Na verdade, eu queria dizer "typeset -f"
Paul Tomblin
Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.