Portage компилирует полные исходные коды нового пакета в том виде, в каком он был доставлен апстримом (иногда команда gentoo сама исправляет исходный код, но это уже другая история).
Бинарные файлы старого пакета обычно удаляются, хотя некоторые старые библиотеки могут остаться, если их удаление повредит другим пакетам. Чтобы удалить старые исходные коды, вам нужно самостоятельно запустить eclean -d distfiles
.
Используйте встроенную команду
для вызова внешней команды, минуя любую функцию с тем же именем. Также:
, если
- обычная команда. Чтобы выполнить сравнение строк, вызовите встроенный тест
или встроенный [
с тем же синтаксисом плюс последний ]
или [ […]]
конструкция с более упрощенным синтаксисом. См. с использованием одинарной или двойной скобки - bash для получения дополнительной информации. -eq
предназначен для сравнения целых чисел. Используйте =
для сравнения строк. -p
). Ниже я вызываю cd
только в случае успеха mkdir
и вызываю его по последнему аргументу, переданному функции. -g
будет распознан только как самый первый аргумент. Возможны варианты синтаксического анализа для обнаружения и удаления его из любого положения, но сложнее. mkdir () {
local do_cd=
if [ "$1" = "-g"]; then
do_cd=1
shift
fi
command mkdir "$@" &&
if [ -n "$do_cd" ]; then
eval "cd \"\${$#}\""
fi
}
Я не рекомендую определять ваши собственные параметры. Они не будут показаны в - справке
или на страницах руководства.Они не более запоминаются, чем определение команды с другим именем: либо вы не помните, что они у вас есть, и нет никаких преимуществ по сравнению с командой с другим именем, либо вы не помните, что они настраиваемые. , а затем вы можете сразу узнать это с помощью настраиваемого имени, спросив оболочку, является ли это встроенной командой или функцией ( type mkcd
), чего нельзя сказать о настраиваемой опции. Есть варианты использования для переопределения стандартной команды, но это не так.