В вашем примере apt-get update
не выходил с ошибкой,
потому что считал проблемы предупреждениями, а не смертельно плохими.
Если есть действительно фатальная ошибка, то она выйдет со статусом ненулевого.
Одним из способов распознавания аномалий является проверка этих закономерностей в stderr
:
W:
- это предупреждения E:
являются ошибками Можно использовать нечто подобное, чтобы эмулировать сбой в случае совпадения вышеуказанных шаблонов, или код выхода самого apt-get update
ненулевой:
if ! { sudo apt-get update 2>&1 || echo E: update failed; } | grep -q '^[WE]:'; then
echo success
else
echo failure
fi
Обратите внимание на !
в if
.
Это потому, что grep
успешно выходит, если шаблон был совпаден,
то есть, если бы были ошибки.
Когда ошибок нет, сам grep grep
не будет работать.
Поэтому условием if
является отрицание кода выхода grep
.
Так как похоже, что у вас нет возможности настроить свой .профиль, но вы можете написать в /tmp, то вы можете сделать следующее:
Положите все свои настройки в скрипт оболочки (например, $HOME/myCustomizations.sh) на вашем локальном сервере. Что-то вроде этого:
alias ls='ls -laht'.
экспортировать AN_ENVIRONMENTAL_VAR_I_NEED_SET=VALUE
scp $HOME/myCustomizations.sh в каталог /tmp вашего удаленного сервера:
$ scp $HOME/myCustomizations.sh user@remoteServer:/tmp/
заходите на ваш удаленный сервер, как обычно.
запустите там свой скрипт.
Это должно привести к настройкам в кш, который вы выполняете на этом терминале. Конечно, раздражает то, что приходится каждый раз прокручивать все подряд, когда вы хотите войти в систему, а затем запускать этот сценарий, но это, скорее всего, является улучшением по сравнению с тем, что вы делаете сейчас, вводя все в строке запроса после входа в систему. В любом случае /tmp/myCustomizations.sh должен жить до тех пор, пока кто-нибудь не перезагрузит удаленный сервер и не очистит каталог /tmp.
Сделайте этот снимок и дайте мне знать, если он вас куда-нибудь приведет.