2009-11-06 6 views
10

Quand j'entre les éléments suivants (BASH):expansion du répertoire (~) dans un argument

rdesktop -r disk:bacon=~/bacon host 

Il ne se développe pas

rdesktop -r disk:bacon=/home/me/bacon host 

Il semble que le "disque:" partie est la problème comme peut être vu dans:

$ echo bacon=~/bacon disk:bacon=~/bacon 

bacon=/home/me/bacon disk:bacon=~/bacon 

Comment puis-je développer le tilde?

Répondre

13

Alors que ~ ne se développe pas (il est utilisé comme routé spécialement du chemin), $HOME fait.

rdesktop -r disk:bacon=$HOME/bacon host 

Mais attention aux changements d'environnement su!

6

rdesktop -r disk:bacon=$(echo ~/bacon) host

fera. Ça ne va pas plaire à l'oeil, mais ça va marcher.

+0

Savez-vous pourquoi cela ne fonctionne pas? J'ai lu le manuel et n'ai trouvé que ceci * "Chaque assignation de variable est vérifiée pour les tix-préfixes sans guillemets immédiatement après un: ou le premier = Dans ces cas, l'expansion du tilde est également effectuée. avec des tildes dans les affectations à PATH, MAILPATH et CDPATH, et le shell assigne la valeur étendue. "* –

+0

Mais à partir de là, il semble que le disque: bacon = ~/bacon devrait fonctionner ... –

+0

bash cherche des tildes après ':' dans la chaîne de remplacement. 'disk: bacon = ...' n'est pas une assignation de variable valide. – outis