Какая разница между командами встроена CD и CD ?

Эти две ссылки довольно хорошо объясняют ситуацию, это просто вопрос повторной проверки всего. Вот пара вещей, которые я делаю ..

Для общих ресурсов Ubuntu: Вы должны запустить " sudo apt-get install samba " в Ubuntu, чтобы получить все необходимые компоненты. {{1} } Затем вы можете настроить общие папки Ubuntu в /etc/samba/smb.conf и перезапустить samba " sudo service samba restart "

Я нашел наиболее важную конфигурацию Samba настройки, которые нужно включить во время тестирования: "browseable = yes" & "guest ok = yes".

Просматривайте общие папки Ubuntu из Windows, используя \\ PC_NAME \ FOLDER_NAME или просто \\ PC_NAME , если у вас есть «просматриваемые» папки. Иногда лучше всего использовать IP-адрес, а не имя компьютера.

Для проверки соединений Ubuntu с Windows вы можете использовать smbclient (apt-get install smbclient) с помощью команды, подобной этой: smbclient --user = username // PC_NAME / FOLDER_NAME / и введите свой пароль при появлении запроса. Если smbclient успешно работает, вы получите приглашение в стиле FTP. Введите список , чтобы увидеть содержимое папки, и , закройте , чтобы выйти.

С общими сетевыми ресурсами нужно учесть многое. Проверьте брандмауэр Windows, разрешающий общий доступ к файлам и принтерам и особенно права доступа к папкам, поэтому дважды или трижды проверьте их с обеих сторон.

17
19.01.2019, 14:26
2 ответа

В большинстве случаев разницы нет (, но см. ниже ). Команда cdявляется встроенной -командой во всех оболочках. Он должен быть собран -в 1 , так как внешняя команда не может изменить окружение вызывающей оболочки, а изменение рабочего каталога представляет собой изменение его окружения.

Команда bashbuiltinзаставляет оболочку использовать встроенную -версию команды, даже если с тем же именем может быть доступна функция оболочки, псевдоним или внешняя команда.

В случае, когда есть , например. функция оболочки с именем cd, то builtin cdвызовет , а не .Использование builtin cdобходит любую перегруженную функциональность, которая могла быть добавлена ​​пользователем через функцию оболочки или псевдоним.

Пример:

Встроенная -команда cdможет быть перегружена функцией, которая обновляет приглашение:

cd() {
    builtin cd "$@" && PS1=$(__update_prompt)
}

где __update_prompt— это другая пользовательская -функция, которая выводит строку.

builtin cdв функции не будет вызывать функцию рекурсивно. Использование builtin cdв оболочке, где эта функция активна, дополнительно не вызывает эту функцию.


1 Есть Unices с внешней cdкомандой (macOS, и, кажется, Solaris ). Цель этой команды, которая не может изменить рабочий каталог для оболочки, возможно, состоит в том, чтобы удовлетворить стандарту POSIX, в котором cdуказан как одна из внешних утилит, которые должны быть доступны(cdне является одной из "специальных встроенных утилит" ). Это также может служить тестом, чтобы увидеть, возможно ли изменить рабочий каталог на заданный каталог .

15
27.01.2020, 19:46

Команда cdвстроена в -, поэтому обычно builtin cdвыполняет то же самое, что и cd. Но есть разница, если cdпереопределить как функцию или псевдоним, и в этом случае cdвызовет функцию/псевдоним, но builtin cdпо-прежнему изменит каталог (, другими словами, сохранит встроенный -доступным, даже если он затерт функцией.)

Например:

user:~$ cd () { echo "I won't let you change directories"; }
user:~$ cd mysubdir
I won't let you change directories
user:~$ builtin cd mysubdir
user:~/mysubdir$ unset -f cd  # undefine function

Или с псевдонимом:

user:~$ alias cd='echo Trying to cd to'
user:~$ cd mysubdir
Trying to cd to mysubdir
user:~$ builtin cd mysubdir
user:~/mysubdir$ unalias cd  # undefine alias

Использование builtinтакже является хорошим способом определить cdфункцию, которая что-то делает и меняет каталог (, поскольку вызов cdиз него просто продолжит вызывать функцию снова в бесконечная рекурсия.)

Например:

user:~ $ cd () { echo "Changing directory to ${1-home}"; builtin cd "$@"; }
user:~ $ cd mysubdir
Changing directory to mysubdir
user:~/mysubdir $ cd
Changing directory to home
user:~ $ unset -f cd  # undefine function
46
27.01.2020, 19:46

Теги

Похожие вопросы