Используйте расширение команды оболочки $ (...)
для переключения имени выходного файла.
Этот код проверяет только aix. По умолчанию обновляется .bashrc
.
echo "alias d='du -sm -- * 2>/dev/null | sort -nr | head -20'" >> $( case $(uname) in *[aA][iI][xX]*) echo ~/.kshrc;; *) echo ~/.bashrc;; esac )
Или разделите строки для удобства чтения:
rcfile=$( case $(uname) in *[aA][iI][xX]*) echo ~/.kshrc;; *) echo ~/.bashrc;; esac )
echo "alias d='du -sm -- * 2>/dev/null | sort -nr | head -20'" >> $rcfile
Настоящим решением проблемы является выяснение того, какой процесс все еще выполняется и почему. Проще сказать, чем сделать! Моя собственная система работала (и так и не завершила )задание «fsck» на внешнем диске емкостью 2 ТБ, подключенном через USB 2.0, файловая система которого была повреждена из-за поврежденных секторов. Неудивительно, что это не могло закончиться! К счастью, единственными данными, к которым я не мог получить доступ, была папка, которая мне не нужна. После того, как я скопировал все остальные данные, я повторно -отформатировал этот диск, этот симптом исчез, и мои выключения снова стали быстрыми.
На самом деле это не ошибка, Linux просто проявляет изящество, ожидая выхода программы до 1 минуты 30 секунд.
Проверьте, не запущен ли какой-либо процесс в фоновом режиме, который игнорирует SIGTERM. Скорее всего, вы сами его запустили или как-то сами запланировали. (Эта проблема не должна возникать в только что установленных дистрибутивах.)
Чтобы исправить ситуацию, найдите способ запустить процесс как системную службу, которая поддерживает действие запуска/остановки.