Расширение тильды в zsh

1. Загрузитесь с Ubuntu Live CD или USB.
2. Найдите свой раздел ubuntu:
sudo blkid
Mine show / dev / sda1


[~] : sudo blkid                                                                                                                                                18:05:04
/dev/sda1: UUID="122d2898-41c4-4d0b-a6e3-efdabacc0910" TYPE="ext4" PARTUUID="b342201c-01"
/dev/sda2: LABEL="ssd2" UUID="10A1139E10A1139E" TYPE="ntfs" PARTUUID="b342201c-02"
/dev/sdb1: LABEL="64Win7" UUID="01D25439F551BF10" TYPE="ntfs" PARTUUID="f0b1ebb0-01"
/dev/sdb2: LABEL="RELAX" UUID="9626FEB726FE9787" TYPE="ntfs" PARTUUID="f0b1ebb0-02"
/dev/sdc1: LABEL="CLGT" UUID="E4481765481735B0" TYPE="ntfs" PARTUUID="c887c887-01"
/dev/loop0: UUID="c901eeeb-0431-40dd-bac7-6ced930103b1" TYPE="xfs"
/dev/mapper/docker-8:1-1327350-pool: UUID="c901eeeb-0431-40dd-bac7-6ced930103b1" TYPE="xfs"

3. Затем перестройте конфигурацию grub:

sudo mount /dev/sda1 /mnt
sudo mount --bind /dev /mnt/dev 
sudo mount --bind /dev/pts /mnt/dev/pts 
sudo mount --bind /proc /mnt/proc
sudo mount --bind /sys /mnt/sys
sudo chroot /mnt
grub-install /dev/sda
grub-install --recheck /dev/sda
update-grub
4. Перезагрузите и вы можете использовать Ubuntu как обычно.
9
27.06.2017, 00:44
1 ответ

~ раскрывается только в нескольких контекстах. POSIX, для стандарта sh предписывает echo a=~ выводить a=~ (в то время как он предписывает ~ расширяться в a=~ отдельно).

zsh однако имеет параметр magicequalsubst, который вы можете использовать для расширения ~ после =, даже если он не находится в заданиях или аргументах для экспорт/набор... псевдоключевых слов.

Итак:

$ echo a=~
a=~
$ set -o magicequalsubst
$ echo a=~
a=/home/chazelas

Обратите внимание, что bash, когда он не в режиме POSIX/sh, расширяет ~ в word=~ но только тогда, когда то, что слева от =, выглядит как буквальное имя переменной bash без кавычек (независимо от того, находится ли оно в аргументах для typeset/declare/export или любая другая команда):

$ bash -c 'echo a=~'
a=/home/chazelas
$ bash -c 'echo "a"=~'
a=~
$ bash -c 'var=a; echo $var=~'
a=~
$ bash -c 'echo a.b=~'
a.b=~
$ (exec -a sh bash -c 'echo a=~')
a=~
16
27.01.2020, 20:06

Теги

Похожие вопросы