¿Cómo eliminar cualquier cadena de un archivo a través de scripts de shell?

9

Intento eliminar la cadena de .bash_profile. Se agrega una cadena cuando se ejecuta mi script de shell:

Mi cadena en bash_profile de la siguiente manera:

# for Myapllication
export MYAPP_HOME=/opt/myapp

Quiero eliminar las cadenas de .bash_profilecuando se elimina myapp a través de rpm.

¿Cómo eliminar cualquier cadena de un archivo a través de un script de shell? (o posible método alternativo)

Gyhot
fuente

Respuestas:

11

Puede eliminar una cadena de un archivo de texto con sed (existen otras herramientas).

Por ejemplo:

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

elimina de .bash_profile cada línea que contiene la cadena myapp.

lgeorget
fuente
10

Un archivo como ~/.bash_profilevive en un directorio de inicio de un usuario. Tal archivo está completamente bajo el control del usuario. rpmNo se supone que los comandos de actuación global como para cambiar tales archivos.

  • Por lo general, tiene un archivo de configuración base, que se entrega mediante el paquete rpm.

  • Luego tiene un archivo de configuración global que puede ser utilizado por root para sobrescribir algunas preferencias específicas del sistema dado.

  • Luego tiene archivos de configuración personal en su directorio de inicio que puede usar para anular la configuración global con sus preferencias personales.

Un comando como rpmsolo debería cambiar el primero y nunca cambiar el último.

michas
fuente
¿Puedes sugerir una URL para examinar este tema?
Gyhot
1
@Gyhot unix.stackexchange.com/questions/77518/… es bueno. Si su distribución de destino tiene un /etc/profile.ddirectorio, suelte un archivo que contenga esa exportlínea allí. De lo contrario, puede editar /etc/profile, pero tenga mucho cuidado de no arruinar las personalizaciones por parte del administrador del sistema.
Gilles 'SO- deja de ser malvado'
3
sed -i '/^export MYAPP_HOME=\/opt\/myapp$/d' ~/.bash_profile
Hauke ​​Laging
fuente
0

Prueba el vim-way:

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