Что делает двоеточие в PATH

Я новичок в bash, и я видел, как люди часто добавляют : после каталога при изменении PATH. После некоторого поиска я не нашел ответа на этот вопрос, или я считаю, что не искал его правильно. Поэтому я надеюсь, что смогу получить ответ здесь.

пример:

/Users/chengluli/anaconda/bin:/Users/chengluli/.rbenv/shims:/

что значит : после bin и shims делать?

4 ответов


: - это разделитель. The PATH переменная сама по себе является списком папок, которые "прошли" при выполнении команды.

в этом случае папки на вашем PATH являются:

  • /Users/chengluli/anaconda/bin
  • /Users/chengluli/.rbenv/shims
  • /

как говорили другие,: является разделителем (Windows использует двоеточие ;). Но вы, вероятно, думаете о конце двоеточия : на конец на PATH переменной. Например:

/Users/chengluli/anaconda/bin:/Users/chengluli/.rbenv/shims:

со страниц bash man:

имя каталога нулевой длины (null) в значении PATH указывает текущий каталог. Имя нулевого каталога может отображаться как два соседних двоеточия или как начальное или конечное двоеточие.

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

кстати, bash использует $PATH только при первом вызове внешней программы, после чего он использует хэш-таблицу. См.man bash и hash команда


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

список каталогов по умолчанию хранится в PATH переменной, разделенных :.


- Я цитата из вывода man bash команда

путь
Путь поиска команд. Это разделенный двоеточиями список каталогов, в которых оболочка ищет команды (см. команды ниже). Нулевой длины (пустой) каталог имя в значении PATH указывает текущий каталог. Имя нулевого каталога может отображаться как два соседних двоеточия или как начальное или конечное двоеточие. Путь по умолчанию зависит от системы, и установить администратором, который устанавливает bash. Общим значением является "/usr/gnu/bin:/usr/local/bin:/usr/ucb:/bin:/usr / bin".

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