в отличие от FAT файловые системы, используемые UNIX, не имеют специального ограничения на размер корневого каталога, но как только раздел будет заполнен, вы не сможете добавить более.
Как сказал l0b0 , маловероятно, что ваш .bashrc будет работать с набором errexit
, но вы можете позаботиться об этой ситуации, протестировав:
case $SHELLOPTS in
(*errexit*) set +e;
export MYVAR=$(my_dubious_command 2>/dev/null);
set -e
;;
(*) export MYVAR=$(my_dubious_command 2>/dev/null)
;;
esac
Команда export
в том виде, в котором она написана, должна возвращать 0 на случай, если любые последующие команды будут проверять $?
; вы не предоставляете ему какие-либо недопустимые параметры, имя переменной является допустимым, и вы не экспортируете несуществующую функцию.
Оператор case проверяет, установлен ли errexit
; если это так, он временно отключает его, чтобы запустить my_dubious_command
.
Попробуем:
$ var=$(false)
$ echo $?
1
$
Однако маловероятно, что у вас установлен errexit
в вашем.bashrc, и еще менее вероятно, что следующая команда проверит код выхода вашей команды, так что очень маловероятно, что это на что-то повлияет.
Сценарии запуска, такие как.bashrc, — это то место, где вы не хотите set -o errexit
, потому что вы можете быть заблокированы из оболочки из-за простой опечатки или изменений, которые вы не контролируете. Чтобы обнаруживать, но не сбой из-за ошибок, вы можете, например, перехватывать их:
$ trap 'echo $?' ERR
$ var=$(false)
1
$