Обратная косая черта будет подавлять расширение псевдонима, т.е. она выполняет исходную команду и следит за тем, чтобы версия псевдонима не запускалась. Скрипты могут неосознанно запускаться с расширением псевдонимов, когда система установила shopt -s expand_aliases
(только BASH) или если она выполняется с использованием source
.
./conda.sh # usually no alias expansion (unless `shopt -s expand_aliases` in BASH)
source ./conda.sh # alias expansion
. ./conda.sh # alias expansion
Некоторым системным администраторам нравится ставить обратную косую черту во всем в качестве превентивной меры против побочных эффектов псевдонимов, просто на случай, если они были непреднамеренно псевдонимом где-то еще, и псевдоним расширяется, как объяснено ранее. Например, если система alias dirname='dirname -z'
где-то установила это и условие позволяет раскрыть псевдоним, то, к сожалению, dirname -z
вместо этого будет вызываться сценарий, который пытается вызвать dirname , что не было предназначено для сценария.
Если есть уверенность, что такого псевдонима не существует, мы можем удалить весь обратный слеш, и он должен работать нормально.
В качестве альтернативы можно использовать command
вместо версии с обратной косой чертой, чтобы подавить псевдоним. Таким образом, вместо \dirname
можно использовать command dirname
, что может выглядеть более читабельным. (Для встроенных команд, таких как cd
, следует использовать builtin
вместо). Я предпочитаю это вместо этого, поскольку он также обходит функцию с тем же именем, что и любые псевдонимы.