Лучшая практика для переменных Unix: переменная, содержащая путь, заканчивается косой чертой - PullRequest
8 голосов
/ 23 апреля 2010

Какова лучшая практика при сохранении каталога в имени файла в системе Unix? Должен ли путь к каталогу заканчиваться косой чертой?

Метод А

TMP="/tmp/pasteTmp/"

, что позволяет вам:

cd "$TMP$fileName"

Метод B

TMP="/tmp/pasteTmp"

, что позволяет вам сделать (с дополнительной косой чертой, которая кажется менее чистой):

cd "$TMP/$fileName"

но также позволяет делать:

cd "$TMP/actualFileName"

Что, я думаю, невозможно при использовании первого метода.

Ответы [ 3 ]

11 голосов
/ 23 апреля 2010

это не имеет значения. Вместо этого вы должны всегда предполагать, что косой черты не существует при использовании пути, добавив свой собственный. / foo // эквивалентен / foo /, поэтому он работает.

3 голосов
/ 23 апреля 2010

Когда вы работаете с большим приложением-монстром с сотнями скриптов и множеством библиотек и исполняемых файлов, вы начинаете больше беспокоиться о том, что вызывает меньше боли, чем о том, что «кажется менее чистым».Я согласен, что двойная косая черта выглядит забавно, но реальность такова, что Unix не волнует.Я предпочел бы предположить, что косой черты не существует, и знаю, что она все равно будет работать, когда я добавлю ее сам, но надеюсь, что все помнят, что она добавлена, и мой код ломается, когда кто-то еще забывает добавить косую черту.* Поставьте себя в ситуацию, когда вы контролируете, будет ли работать ваш код.Зависимость от того, что другие соблюдают соглашение, приводит к головным болям и звонкам в службу поддержки в 3 часа ночи, когда они неизбежно этого не делают.

3 голосов
/ 23 апреля 2010

Когда вы ссылаетесь на каталог при обычном использовании, вы не включаете косую черту: мой домашний каталог - /home/andy, а не /home/andy/. Если вы пишете сценарии, предполагающие наличие косой черты, рано или поздно вы забудете включить ее и удивите себя.

Я не уверен, что согласен с вами, что дополнительная косая черта "кажется менее чистой". Когда вы не используете переменные, вы ожидаете, что косая черта разделит имена каталогов и файлов; Когда имя каталога хранится в переменной оболочки, я все же нахожу естественным чтение и запись с косой чертой, разделяющей части.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...