Команда Linux "which" не находит исполняемые файлы по пути NFS в Ubuntu
Я заметил, что команда оболочки Linux "которая" НЕ показывает исполняемый файл, хотя она уже есть в пути поиска.
В частности, мой $PATH включает в себя "~/.local/bin"; исполняемый файл ~/.local/bin/charm. "Какой шарм" ничего не возвращает, хотя я могу запустить "Шарм" без проблем. Я использую Ubuntu 16.04 и Bash
Проблема зависит от дистрибутива Linux. Если я вхожу в другую машину RHEL 6.10, команда 'charm' отлично работает для того же исполняемого файла.
Проблема также может касаться монтирования nfs. В Ubuntu 16.04 команда 'which', кажется, отлично работает для исполняемых файлов на локальных дисках, например, 'которая, которая' показывает '/ usr / bin / which', но она НЕ находит исполняемые файлы по путям nfs, что имеет место для моего "~/.local/bin".
Я искал в Интернете, но не мог найти объяснение. Есть ли способ заставить команду 'which' в Ubuntu показывать все подключенные исполняемые файлы по пути, включая монтирование nfs?
Спасибо!
1 ответ
Ваш $PATH
включает в себя ~/.local/bin
где тильда не была расширена. bash
будет расширять его на лету каждый раз, но which
(по крайней мере, в Ubuntu) или sh
не будет.
Если ты хочешь which
чтобы увидеть исполняемые файлы в ~/.local/bin
Вы должны убедиться, что тильда расширена до того, как PATH
переменная получает это. Строка ~/.local/bin
вероятно добавлен к вашему PATH
одним из сценариев запуска. Найдите соответствующую строку и исправьте ее в соответствии с примерами ниже.
Примечание: сначала запустите каждый из следующих примеров в новой оболочке, чтобы вы могли наблюдать ( echo "$PATH"
) как она меняет переменную каждый раз независимо.
Это не расширит символ тильды (из-за цитирования):
PATH="~/.local/bin:$PATH"
Это будет:
PATH=~/".local/bin:$PATH"
Или это:
PATH=~/.local/bin:$PATH
Правила расширения тильды несколько сложны. Рассмотреть возможность использования $HOME
, Примеры:
PATH="$HOME/.local/bin:$PATH"
PATH="$PATH:$HOME/.local/bin"
Чтобы исправить уже установленный PATH
переменная, заменить ~
в нем с содержанием $HOME
:
PATH="${PATH/\~/$HOME}"