~ vs /home/userName et subsitution d'une partie de chaine par une variable
Bonjour,
En bash,
1) J'aimerai comprendre précisément la différence entre ~ et /home/userName
Si on fait
Code:
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:
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,