Зачем экранировать тривиальные символы в скрипте оболочки?

Зачем экранировать тривиальные символы в скрипте оболочки?

Я только что открыл устаревший скрипт оболочки (написанный на старом ksh88 на Solaris) и обнаружил следующее, повторяющееся по всему коду:

[ -f $myfile ] && \rm -f $myfile

Мне кажется странным, что здесь есть обратная косая черта.

Я знаю, что это сделано намеренно, поскольку этот тип (очевидно бесполезного) экранирования повторяется по всему коду. Первоначальный автор давно умер, я не могу связаться с ним, чтобы спросить его.

Это просто забавная идиосинкразия автора или это какая-то устаревшая хорошая практика, которая имела смысл в какой-то момент времени? Или, может быть, это на самом деле рекомендуемый способ делать что-то, и я что-то упускаю?

решение1

Это используется для защиты псевдонимов:

$ ls
.bashrc  a  b

$ alias ls
alias ls='ls $LS_OPTIONS'

$ \ls
a   b

решение2

Обычно хорошей практикой является добавление некоторых мер безопасности для rm, что обычно достигается с помощью псевдонимов. В многопользовательских средах вы часто будете видеть многие из этих мер защиты на месте.

Для практикующего скриптинга оболочки часто бывает полезно отключить эти защитные меры, поскольку, как предполагается, они знают, что делают. Это, как уже упоминалось, достигается путем добавления к команде префикса \.

Вопреки предложению @Sorpigal, я бы определенно не советовал отключать псевдонимы, чтобы скрипт не смог вернуть пользователю их гарантии. Кроме того, использование полного пути также неразумно, поскольку rm может находиться во вспомогательном пути по какой-то причине - например, GNU rm против BSD rm. Переопределить его строгим путем означало бы разрушить цель наличия PATH, а именно масштабирование и обработку многих архитектур, сред и пользователей.

Связанный контент