7

Не понимая, что у меня включен caps-lock, я набрал CD в командной строке на моем Mac. Удивительно, но это не ошибка.

which CD показывает мне /usr/bin/CD . И если я изучу этот файл, он будет выглядеть так:

#!/bin/sh
# $FreeBSD: src/usr.bin/alias/generic.sh,v 1.2 2005/10/24 22:32:19 cperciva Exp $
# This file is in the public domain.
builtin `echo ${0##*/} | tr \[:upper:] \[:lower:]` ${1+"$@"}

Я думаю, это как-то связано с переводом прописных букв в строчные, но ${0##*/} совершенно непрозрачен для меня. man CD говорит мне "нет ручного ввода". Может кто-нибудь объяснить эту команду?

РЕДАКТИРОВАТЬ: Хорошо, я только что заметил, что файловая система OSX нечувствительна к регистру, так что этот файл на самом деле /usr/bin/cd . Но если я наберу cd нормально, я, конечно, получу встроенную функцию, поэтому /usr/bin/cd только тогда, когда я неправильно понимаю мой случай. Я все еще хотел бы знать, что это делает.

2 ответа2

10

Кажется, это ничего не делает вообще:

Ссылка на список рассылки Apple

«Я собираюсь вспомнить некоторые старые воспоминания, поэтому не могу дать очень подробное объяснение, но причина существования /usr /bin /cd связана с требованием POSIX, касающимся псевдонимов, и невозможностью использовать псевдоним через экранирование. , Но /usr /bin /cd - бесполезный сценарий, так как если вы запускаете cd в сценарии оболочки, изменение каталога применяется только к подоболочке, в которой выполняется сценарий. CD не может быть сценарием оболочки.

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

Я заметил, что /usr /bin /cd имеет 15 жестких ссылок в моей системе 10.4 [...] "

Далее в этой теме:

«Мой друг сказал мне, что« $ {0 ## */} »означает« принять команду, но удалите ее путь »(т. Е. Конвертируйте« /usr /bin /cd »в" cd ").»

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

-1

Он пытается сделать правильные вещи и перевести вашу команду "cd" в нижний регистр. К сожалению, это довольно бессмысленно, так как работает в подоболочке. Остальное связано с пониманием bash.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .