Gimp 2.10 не обновляет библиотеку? с 2.8

Как JBallin и Stéphane Chazelas указали, что в оболочках POSIX поиск несуществующего файла приведет к сбою входа в систему.

Но добавление теста, чтобы увидеть, существует ли файл, а затем попытка получить его источник, может привести к тому, что называется состоянием гонки. Если что-то изменится nvm.shмежду [ -s nvm.sh ]и . nvm.sh, это вызовет именно ту ошибку, которую они пытаются предотвратить, хотя и намного реже.

В общем, способ предотвратить состояние гонки состоит в том, чтобы просто попробовать то, что вы хотите сделать, а затем обработать ошибку, если она не удалась, например.

. "$NVM_DIR/nvm.sh" || echo "Sourcing $NVM_DIR/nvm.sh failed" >&2

Оказывается, это не работает в оболочках POSIX, потому что, как указано выше, .сбой приведет к немедленному завершению работы оболочки до того, как будет запущена какая-либо обработка ошибок.

Мой ответ утверждает, что оболочки POSIX не имеют отношения к этому вопросу, потому что .bash_profileникогда не должны работать в режиме POSIX. Так что в любом случае мы можем просто выполнить приведенный выше код.

В целях безопасности мы могли бы убедиться, что режим POSIX не действует, или убедиться, что режим POSIX отключен, используя метод, описанный вhttps://unix.stackexchange.com/a/383581/3169.

В ответе Стефана есть несколько полезных советов о том, как обрабатывать все оболочки POSIX, что, я думаю, было намерением автора nvm, но немного отличалось от того, что задавал здесь вопрос, поэтому у нас есть несколько возможных подходов, в зависимости от того, что ваша цель.

0
02.06.2020, 12:53
0 ответов

Теги

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