Comment supprimer n'importe quelle chaîne d'un fichier via des scripts shell?

9

J'essaie de supprimer la chaîne de .bash_profile. La chaîne est ajoutée lorsque mon script shell s'exécute:

Ma chaîne à bash_profile comme suit:

# for Myapllication
export MYAPP_HOME=/opt/myapp

Je souhaite supprimer les chaînes .bash_profilelorsque myapp est supprimé via rpm.

Comment supprimer n'importe quelle chaîne d'un fichier via un script shell? (ou méthode alternative possible)

Gyhot
la source

Réponses:

11

Vous pouvez supprimer une chaîne d'un fichier texte avec sed (d'autres outils existent).

Par exemple:

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

supprime de .bash_profile chaque ligne contenant la chaîne myapp.

lgeorget
la source
10

Un fichier comme ~/.bash_profilevit dans un répertoire personnel d'un utilisateur. Un tel fichier est entièrement sous le contrôle de l'utilisateur. Les commandes globales comme rpmne sont pas censées modifier de tels fichiers.

  • Vous disposez généralement d'un fichier de configuration de base, qui est fourni par le package rpm.

  • Vous disposez alors d'un fichier de configuration globale qui peut être utilisé par root pour remplacer certaines préférences spécifiques au système donné.

  • Ensuite, vous avez des fichiers de configuration personnels dans votre répertoire personnel que vous pouvez utiliser pour remplacer le paramètre global par vos préférences personnelles.

Une commande comme celle- rpmci ne devrait changer que la première et ne jamais changer la seconde.

michas
la source
Pouvez-vous suggérer une URL à examiner pour ce sujet?
Gyhot
1
@Gyhot unix.stackexchange.com/questions/77518/… en est une bonne. Si votre distribution cible possède un /etc/profile.drépertoire, déposez-y un fichier contenant cette exportligne. Sinon, vous pouvez modifier /etc/profile, mais soyez très prudent de ne pas détruire les personnalisations par l'administrateur système.
Gilles 'SO- arrête d'être méchant'
3
sed -i '/^export MYAPP_HOME=\/opt\/myapp$/d' ~/.bash_profile
Hauke ​​Laging
la source
0

Essayez le vim-way:

ex -s +"g/MYAPP_HOME/d" -cwq file.txt
Kenorb
la source