Восстановить функциональность «cd ..» после символьной ссылки

Другая возможность, если Windows была удалена с компьютера:

Удалить загрузчик Windows из ESP. Обычно это делается, набрав sudo rm -rf /boot/efi/EFI/Microsoft. Введите sudo update-grub.

Когда скрипт update-grub запускается, он должен заметить, что нет Windows и, следовательно, генерирует файл grub.cfg, который не содержит опции для загрузки Windows и не отображает меню.

Обратите внимание, однако, что этот подход не позволяет загружать Windows. Это хорошо для Behzadsh, поскольку в вопросе указывается, что Windows была удалена с компьютера. (Фактически, этот подход по существу завершает задачу неполного удаления, которое уже было сделано.) Этот подход неверен для тех, кто просто хочет обойти меню GRUB, но все еще сохраняет возможность загрузки Windows - скажем, используя компьютер встроенный менеджер загрузки для загрузки Windows. Такой подход не позволит загружать Windows, по крайней мере, до восстановления загрузчика Windows.

1
задан 12 August 2013 в 10:32

3 ответа

В поведении cd -P есть тонкое предупреждение (опубликовано как ответ из-за длины):

$ dir1=$(mktemp --directory)
$ dir2=$(mktemp --directory)
$ ln -s -- "$dir1" /tmp/start
$ ln -s -- "$dir2" "$dir1"
$ cd "/tmp/start/"*
$ cd -P ..

Что должно теперь pwd печатать? Логически это может быть либо

$dir1, если cd -P .. сначала cd .., а cd -- "$(readlink -f)" или /tmp, если cd -P .. сначала cd -- "$(readlink -f)", а cd .. после этого.

На самом деле это последнее, что означает, что pwd интуитивно на два уровня выше, чем «родительский» каталог.

5
ответ дан 24 May 2018 в 19:07
  • 1
    Благодаря! cd -P все еще решает проблему, с которой я столкнулся, но по-прежнему полезно знать. – Val 14 August 2013 в 09:22

Альтернативный способ:

cd $(/bin/pwd)/..
2
ответ дан 24 May 2018 в 19:07

Я чувствую вашу боль - я считаю, что bash будет в основном нарушен для интерактивного использования из-за этого поведения.

tcsh - гораздо более удобная оболочка для интерактивного использования. Оставьте bash для программирования (если вы настаиваете на написании сценариев оболочки, когда есть много лучших альтернатив среди многих языков сценариев).

Чтобы изменить оболочки для любого пользователя, введите chsh в командной строке и следуйте подсказкам (опять же, я рекомендую /bin/tcsh и отличную книгу O'Reilly. Использование csh и tcsh, доступно для практически ничего не используемого).

2
ответ дан 24 May 2018 в 19:07
  • 1
    Поскольку я написал этот ответ, я научился перестать беспокоиться и любить Bash для интерактивного использования. Но я по-прежнему не могу справиться с поведением cd по умолчанию для символических ссылок. Я должен запомнить set -o physical в своих .bashrc или .bash_profile для каждой машины, которую я использую. – dodgethesteamroller 29 May 2015 в 23:34

Другие вопросы по тегам:

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