Этим вопросом является продолжение от https://unix.stackexchange.com/questions/126955/percent-in-path-environment-variable. Я отправляю его здесь, так как это является более определенным для дистрибутива.
Оболочка, используемая по умолчанию для sh а именно, подчеркивает штриховой линией, не совместимо с execvp, потому что это играет с переменной $PATH. Стандартизованный способ контакта со странными именами файлов должен использовать схему кодирования URL. Теперь я не могу использовать тот стандарт, потому что тире резервирует %. Для решения этого я проблема, у меня есть следующие опции
Рекомендуйте моим пользователям на Ubuntu изменить символьную ссылку/bin/sh на что-то еще как удар. Необходимо сделать это глобально, так как popen (3) полагается на/bin/sh.
Отличайтесь от традиционного кодирования URL при помощи чего-то другого, чем %
Бросьте ошибку каждый раз, когда любой из Запрещенных символов (да, Windows, но они ограничение нормальны в конфигурации двойной загрузки) появляется.
Идеально я предпочитаю, чтобы опция (1) казалась лучшим способом пойти. Это позволяет использовать стандартизированную схему Escape в именах файлов. Однако, так как тире ясно ведет себя по-другому, чем некоторые другие оболочки, он повредит систему, если какой-либо из системных сценариев будет полагаться на функциональность, уникальную для тире. Также это требует, чтобы у пользователя были полномочия пользователя root.
Опция (2) подразумевает, что я должен найти другой символ, который не сталкивается нигде. Конечно, некоторая оболочка может завинтить любой символ, который не является буквой.
Опция (3) подразумевает слишком большое сокращение функциональности
Опция каждый довольно прост. Просто необходимо работать:
sudo dpkg-reconfigure dash
И номер выбора. Это продвинет /bin/sh
назад к /bin/bash
.
Вы могли сделать это вручную (удаляющий ссылку, создавая новую), но это официальный метод .