Что означает «//» взамен от `which`

У меня есть test скриптовый test в полном пути /home/sawa/foo/bar/test . Каталог /home/sawa/foo/bar находится в пределах $PATH и имеет приоритет над стандартными, включая /usr/bin . Когда я делаю

 `which test` 

чтобы убедиться, что эта команда правильно распознана, она возвращает

 /home/sawa/foo/bar//test 

с двойной косой чертой // . Я знаю, что есть встроенная команда с тем же самым test имени, и когда я удаляю мой, этот под /usr/bin/test возвращается, поэтому я думаю, что он каким-то образом вмешивается.

  1. Что здесь означает эта двойная косая черта и почему она появляется здесь?
  2. Мой исполняемый test не работает корректно. Почему это?

2 Solutions collect form web for “Что означает «//» взамен от `which`”

Я бы предположил, что у вас есть /home/sawa/foo/bar/ на вашем пути, т. Е. Путь с завершающей косой чертой.

which выполняет итерацию по каждому элементу $PATH и добавлению /argv[1] и проверяет наличие этого файла. Это вызывает двойной слэш – один из части $PATH и один из /argv[1] .

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

Поскольку test не работает, убедитесь, что вы не используете встроенную оболочку при вызове test . Обычно вы делаете это, используя полный путь, но с помощью bash вы также можете использовать enable -n test для отключения встроенной команды test .

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

Если вы хотите использовать альтернативные функции, вы должны назвать свой скрипт чем-то другим.

  • Почему `grep fil *` терпит неудачу?
  • Что делает «set -» в этой точке входа в Dockerfile?
  • перечислите разницу и совпадение между двумя обычными наборами данных
  • Пакетное переименование файлов из ненулевого начального индекса
  • Использование уведомления-отправки с помощью cron
  • Помогает ли родительский скрипт bash запомнить историю cd из сценария child bash?
  • Chrome OS: окно Crosh и имя хоста
  • Как определить ошибку в определенном файле при проверке контрольной суммы (какой файл имеет проблему при проверке) в сценарии оболочки
  • Зачем . / home / Desktop неправильный и ./Desktop правильно?
  • Cron Job: перенаправление вывода сценария оболочки в файл
  • Назначение IP-адреса переменной окружения
  • Interesting Posts

    xmodmap Событие KeyPress для события ButtonPress

    Рекурсивно найти файлы по содержанию

    Как выполняется поиск в файле (поиск) или автозаполнение?

    Как искать? в человеке?

    Проверьте, существует ли файл файла в другом файле и обновляется конкретный столбец первого файла

    Каков правильный синтаксис клонирования раздела ntfs в разреженный файл на другом диске ntfs?

    Содержимое папки списка во время команды cd

    Отключить поведение копирования и вставки по умолчанию в Bash

    Гостевые виртуальные машины не могут пинговать друг друга в пользовательской сети только для хоста на рабочей станции VMware

    В Fedora 16 активен только один ядро ​​процессора

    Система слишком медленная

    Вызов java из Bash: «Невозможно выполнить двоичный файл»

    Правильное определение использования памяти в Linux

    Предоставить пользователю разрешение на доступ к файлам в каталоге

    универсальная помощь / команда man: помощь встроенных частичных совпадений

    Linux и Unix - лучшая ОС в мире.