Как добавить каталог в PATH в Linux

Обычно расположение исполняемого файла для запуска установленной программы добавляется в $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.

Надеюсь это поможет.

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *

Этот сайт использует Akismet для борьбы со спамом. Узнайте, как обрабатываются ваши данные комментариев.