Como remover qualquer string de um arquivo via shell scripts?

9

Eu tento remover a string de .bash_profile. A string é adicionada quando meu script de shell é executado:

Minha string em bash_profile da seguinte maneira:

# for Myapllication
export MYAPP_HOME=/opt/myapp

Eu quero remover as cordas de .bash_profilequando myapp é removido via rpm.

Como remover qualquer string de um arquivo via shell script? (ou possível método alternativo)

Gyhot
fonte

Respostas:

11

Você pode remover uma string de um arquivo de texto com sed (existem outras ferramentas).

Por exemplo:

sed -i -e '/myapp/d' .bash_profile

remove de .bash_profile todas as linhas que contêm a string myapp.

lgeorget
fonte
10

Um arquivo como ~/.bash_profilevive no diretório inicial de um usuário. Esse arquivo está completamente sob controle do usuário. Comandos de atuação global como rpmnão devem alterar esses arquivos.

  • Você geralmente tem um arquivo de configuração base, que é entregue pelo pacote rpm.

  • Você tem um arquivo de configuração global que pode ser usado pela raiz para substituir algumas preferências específicas do sistema especificado.

  • Em seguida, você tem arquivos de configuração pessoal em seu diretório pessoal que podem ser usados ​​para substituir a configuração global por suas preferências pessoais.

Um comando como rpmdeve mudar apenas o primeiro e nunca o último.

michas
fonte
Você pode sugerir um URL para examinar este tópico?
Gyhot
1
@Gyhot unix.stackexchange.com/questions/77518/… é bom. Se sua distribuição de destino tiver um /etc/profile.ddiretório, solte um arquivo contendo essa exportlinha lá. Caso contrário, você poderá editar /etc/profile, mas tenha muito cuidado para não destruir personalizações pelo administrador do sistema.
Gilles 'SO- stop be evil'
3
sed -i '/^export MYAPP_HOME=\/opt\/myapp$/d' ~/.bash_profile
Hauke ​​Laging
fonte
0

Experimente o vim-way:

ex -s +"g/MYAPP_HOME/d" -cwq file.txt
kenorb
fonte