Обычно расположение исполняемого файла для запуска установленной программы добавляется в $PATH в Linux. Следовательно, вы можете запускать программу из любого места в оболочке, не вводя полный путь к исполняемому файлу. Однако в некоторых случаях вам необходимо вручную добавить место установки программы в файл $PATH. В этом кратком руководстве мы увидим, как добавить каталог в PATH в операционных системах Linux.
Зачем нам добавлять каталог в $PATH?
На днях я тестировал программу Macchina , написанную на языке программирования Rust . Итак, я установил Rust с помощью диспетчера пакетов conda в своей системе Ubuntu, а затем установил Macchina с помощью диспетчера пакетов cargo Rust.
Когда я попытался запустить программу Macchina, на выходе было сказано, что программа не установлена. Я снова попытался установить его и получил следующее сообщение об ошибке:
Updating crates.io index Ignored package `macchina v0.5.9` is already installed, use --force to override warning: be sure to add `/home/sk/.cargo/bin` to your PATH to be able to run the installed binaries
Как вы, возможно, уже знаете, когда мы устанавливаем программу, написанную на Rust, исполняемые двоичные файлы будут сохранены в каталоге ~/.cargo/bin
.
$ ls ~/.cargo/bin/ macchina
Как видите, двоичный файл Macchina хранится в каталоге грузового отсека. После установки Rust мне следовало добавить этот каталог в свой $PATH, но я забыл. Отсюда и вышеупомянутая проблема!
Если бы я установил Rust с помощью скрипта установщика rustup, я бы не столкнулся с этой проблемой. Поскольку сценарий rustup автоматически добавит каталог bin Cargo в переменную среды $PATH, изменив файл профиля, расположенный в ~/.profile
. Но в этом случае я установил Rust внутри среды conda, и каталог bin не добавлен в PATH.
Список переменных среды в $PATH
Давайте перечислим все переменные среды $PATH, которые мы выведем командой echo
.
$ echo $PATH
Пример вывода:
/home/sk/anaconda3/envs/rustenv/bin:/home/sk/anaconda3/condabin:/home/sk/.nvm/versions/node/v15.0.1/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games:/snap/bin
Как видно из вышеприведенного вывода, каталог ~/.cargo/bin/
недоступен в $PATH, поэтому программа Macchina не может быть запущена с использованием ее имени. Однако я могу запустить программу, введя полный путь, как показано ниже:
$ ~/.cargo/bin/macchina
Чтобы запустить программу, используя ее имя из любого места, нам нужно добавить ее в PATH, как показано в следующем разделе.
Добавить каталог в PATH в Linux
Чтобы добавить каталог, например /home/sk/.cargo/bin/, в $ PATH, запустите:
$ export PATH=/home/sk/.cargo/bin:$PATH
Обратите внимание на двоеточие (:) в конце пути к каталогу.
Теперь снова перечислите переменные среды, используя echoкоманду:
$ echo $PATH
Пример вывода:
/home/sk/.cargo/bin:/home/sk/anaconda3/envs/rustenv/bin:/home/sk/anaconda3/condabin:/home/sk/.nvm/versions/node/v15.0.1/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games:/snap/bin
Видите? Каталог ~/.cargo/bin
был добавлен в $PATH. С этого момента я могу запускать любую программу, установленную в этом каталоге, просто вызывая имя программы. Не нужно указывать полный путь!
Учтите, что это временно. После выхода из текущего сеанса переменная среды исчезнет. Чтобы сделать изменения постоянными, отредактируйте файл ~/.bashrc
:
$ nano ~/.bashrc
Добавьте в конец следующую строку:
export PATH=/home/sk/.cargo/bin:$PATH
Нажмите, CTRL+O, а затем, CTRL+X, чтобы сохранить файл и выйти.
Выполните следующую команду, чтобы изменения вступили в силу немедленно:
$ source ~/.bashrc
Если вы хотите сделать это общесистемным, добавьте ту же строку в /etc/profile.
Надеюсь это поможет.