Запись сценария оболочки в определенной оболочке означает устанавливать ту оболочку. Единственный стандарт должен иметь csh
и sh
установленный по всем вариантам Unix. Так, если бы Вы хотели, чтобы Ваш сценарий работал на Солярисе, *BSD и GNU затем, то необходимо было бы записать это в, скажем, Оболочке Bourne.
Однако большинство команд Unix имеет различные синтаксисы при различных реализациях - смотрят на ps
в соответствии с Солярисом, FreeBSD и GNU - так в зависимости от того, какие инструменты Вы используете, Ваш сценарий не может быть портативным так или иначе. То, где оболочка установлена, будет иметь значение также. Это /bin/bash
/usr/bin/bash
, /usr/local/bin/bash
, или где-то в другом месте?
Я не знаю, что любые стандарты определяют оболочку. Взгляните на дистанционное управление или http://192.220.96.201/es/es-usenix-winter93.html`"> es для странных нестандартных оболочек. Однако они, кажется, все еще соответствуют некоторым общим идеям.
Если можно изменить конфигурацию веб-сервера или позволенный иметь .htaccess, можно установить пользовательские ошибочные страницы. Например, принимая апача как веб-сервер, сделайте ошибочную страницу /var/www/error-pages/404-error.html
и добавьте следующее к своему .htaccess или разделу vhosts.
Alias /error-pages /var/www/error-pages
ErrorDocument 404 /error-pages/404-error.html
Вместе с директивой псевдонима можно использовать те же ошибочные страницы для нескольких vhosts, если у Вас есть больше чем один. Это одно должно помочь не избиению, но можно также добавить -X error-pages
к Вашему wget
параметры для пропуска всех пользовательских ошибочных страниц в целом.
Сделайте копию файла прежде, чем назвать wget. (Кажется, нет способа сказать wget удалять связь и воссоздавать, а не ударять файл.)
cp -p foo foo.prev
wget http://example.com/foo
if ! [ -S "foo" ]; then mv -f foo.prev foo; done