Bonjour,

En bash,

1) J'aimerai comprendre précisément la différence entre ~ et /home/userName
Si on fait
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
 
var=~/monRep
echo $var
le ~ est remplacé par /home/userName
Si quelqu'un a une explication ou un lien sur une ?

2) Cette différence résulte sur le problème concret suivant :
Je tente d'écrire un script qui lit dans un fichier un chemin puis utilise ce chemin. C'est dans un sous-shell et le ~ fait que le chemin n'est pas reconnu. Il l'est si c'est /home/userName.
Je n'arrive pas à substituer dans une variable une partie de chaine par une variable. Ceci avec sed car je ne connais pas awk
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
 
#! /bin/bash -x
pathVar="~/monDir"
pathVar2="~/monDir"
racine="/home/`whoami`"
pathVar=`echo "$pathVar" | sed 's/~/\/home\/userName/'`
pathVar2=`echo "$pathVar2" | sed 's/~/$racine/'`
après exécution (copie de l'affichage avec -x):
pathVar=/home/userName/monDir
pathVar2='$racine/monDir'

Je comprends que $racine n'est pas substituer car entre '' mais je ne sais pas comment procéder.

Merci pour votre aide,