tilde=\~${PWD#~}
Я думаю, що це ти хочеш?
Що стосується тильди, це те, що він розгортається як візерунок, його не потрібно цитувати. Використання $HOME
таким же чином без лапок призведе до непередбачуваних результатів, оскільки будь-який з його складових символів може бути символом зразка, і тому він не завжди може призвести до очікуваного результату.
Але розширення тильди завжди має місце, як ніби воно є результатом розширеного котирування, і тому його результати передбачувані. Це, мабуть, справедливо практично в кожній оболонці, яку я перевірив, як для case
моделей, так і для моделей параметрів, за винятком винятків як з будь-яких причин, так ksh93
і mksh
з будь-яких причин - жодна з яких, схоже, не вшановує цитований аспект тильди в цій якості.
Інша акуратна річ у цьому полягає в тому, що ви можете переосмислитись, $HOME
щоб взагалі обробляти будь-який каталог. Наприклад:
cd ~
HOME=/some/prefix/I/would/like/to/trim
#or, perhaps more usefully, some scripted means of arriving at same
tilde=\~${OLDPWD#~}
HOME=$PWD
Ось ще один приклад:
set 1 2 3 4 5 \~
cd ~; cd -; HOME= IFS=/
for d do shift
HOME=${*#~/}/$d
set ~ "$d" $HOME
done; cd -; HOME=$PWD
printf %s\\n "$@"
5/4/3/2/1/2/3/4/5/~/1/2/3/4/5/~
~
5
4
3
2
1
2
3
4
5
~
1
2
3
4
5
~