Что означает «//» взамен от `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 существует только для использования оболочек, у которых нет встроенной версии.

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

  • Извлечение некоторых файлов из папки и создание списка этих файлов
  • Как я могу читать строки за строкой из переменной в bash?
  • GNU находит и маскирует {} для некоторых оболочек - что?
  • Регистратор данных с PI
  • Как скопировать файл в сценарий bash и переименовать его во время копирования и поместить его в тот же каталог
  • Экспортируйте vars env в окно tmux windows / сессии / панели
  • Символы по глубине каталога
  • Исходный файл .bashrc в bash глобально
  • Sh Script с использованием ftp для размещения списка файлов
  • Как найти общее количество вхождений текста и файлов с помощью команды find
  • Перезагрузка zsh при изменении размера окна терминатора
  • Linux и Unix - лучшая ОС в мире.