- Переменная PATH в Linux
- Переменная PATH в Linux
- Выводы
- UNIX / Linux: Set your PATH Variable Using set or export Command
- Finding out your current path
- How do I modify my path?
- Bash, Sh, Ksh shell syntax to modify $PATH
- Tcsh or csh shell syntax to modify $PATH
- Examples
- Как добавить путь к каталогу в переменную $PATH
- Просмотр текущих настроенных каталогов в $PATH
- Как временно добавить каталог в $PATH
- Как добавить каталог в $PATH на постоянной основе
Переменная PATH в Linux
Когда вы запускаете программу из терминала или скрипта, то обычно пишете только имя файла программы. Однако, ОС Linux спроектирована так, что исполняемые и связанные с ними файлы программ распределяются по различным специализированным каталогам. Например, библиотеки устанавливаются в /lib или /usr/lib, конфигурационные файлы в /etc, а исполняемые файлы в /sbin/, /usr/bin или /bin.
Таких местоположений несколько. Откуда операционная система знает где искать требуемую программу или её компонент? Всё просто — для этого используется переменная PATH. Эта переменная позволяет существенно сократить длину набираемых команд в терминале или в скрипте, освобождая от необходимости каждый раз указывать полные пути к требуемым файлам. В этой статье мы разберёмся зачем нужна переменная PATH Linux, а также как добавить к её значению имена своих пользовательских каталогов.
Переменная PATH в Linux
Для того, чтобы посмотреть содержимое переменной PATH в Linux, выполните в терминале команду:
На экране появится перечень папок, разделённых двоеточием. Алгоритм поиска пути к требуемой программе при её запуске довольно прост. Сначала ОС ищет исполняемый файл с заданным именем в текущей папке. Если находит, запускает на выполнение, если нет, проверяет каталоги, перечисленные в переменной PATH, в установленном там порядке. Таким образом, добавив свои папки к содержимому этой переменной, вы добавляете новые места размещения исполняемых и связанных с ними файлов.
Для того, чтобы добавить новый путь к переменной PATH, можно воспользоваться командой export. Например, давайте добавим к значению переменной PATH папку/opt/local/bin. Для того, чтобы не перезаписать имеющееся значение переменной PATH новым, нужно именно добавить (дописать) это новое значение к уже имеющемуся, не забыв о разделителе-двоеточии:
Теперь мы можем убедиться, что в переменной PATH содержится также и имя этой, добавленной нами, папки:
Вы уже знаете как в Linux добавить имя требуемой папки в переменную PATH, но есть одна проблема — после перезагрузки компьютера или открытия нового сеанса терминала все изменения пропадут, ваша переменная PATH будет иметь то же значение, что и раньше. Для того, чтобы этого не произошло, нужно закрепить новое текущее значение переменной PATH в конфигурационном системном файле.
В ОС Ubuntu значение переменной PATH содержится в файле /etc/environment, в некоторых других дистрибутивах её также можно найти и в файле /etc/profile. Вы можете открыть файл /etc/environment и вручную дописать туда нужное значение:
sudo vi /etc/environment
Можно поступить и иначе. Содержимое файла .bashrc выполняется при каждом запуске оболочки Bash. Если добавить в конец файла команду export, то для каждой загружаемой оболочки будет автоматически выполняться добавление имени требуемой папки в переменную PATH, но только для текущего пользователя:
Выводы
В этой статье мы рассмотрели вопрос о том, зачем нужна переменная окружения PATH в Linux и как добавлять к её значению новые пути поиска исполняемых и связанных с ними файлов. Как видите, всё делается достаточно просто. Таким образом вы можете добавить столько папок для поиска и хранения исполняемых файлов, сколько вам требуется.
Источник
UNIX / Linux: Set your PATH Variable Using set or export Command
H ow do I add a new path to $PATH variable under Linux and UNIX like operating system? What is my path, and how do I set or modify it using csh/tcsh or bash/ksh/sh shell?
The PATH is an environment variable. It is a colon delimited list of directories that your shell searches through when you enter a command. All executables are kept in different directories on the Linux and Unix like operating systems.
Tutorial details | |
---|---|
Difficulty level | Easy |
Root privileges | No |
Requirements | None |
Est. reading time | 5m |
Finding out your current path
To find out what your current path setting, type the following command at shell prompt. Open the Terminal and then enter:
How do I modify my path?
To modify your path edit $PATH variable as per your shell. The syntax for setting path under UNIX / Linux dependent upon your login shell.
Bash, Sh, Ksh shell syntax to modify $PATH
If you are using bash, sh, or ksh, at the shell prompt, type:
Please feel free to replace /path/to/dir1 with the directory you want the shell to search.
Tcsh or csh shell syntax to modify $PATH
If you are using tcsh or csh, shell enter:
Please feel free to replace /path/to/dir1 with the directory you want the shell to search.
Examples
In this example add /usr/local/bin to your path under BASH/ksh/sh shell, enter:
To make these changes permanent, add the commands described above to the end of your
/.profile file for sh and ksh shell, or
/.bash_profile file for bash shell:
KSH/sh shell user try:
In this final example add /usr/local/bin/ and /scripts/admin/ to your path under csh / tcsh shell, enter:
To make these changes permanent, add the commands described above to the end of your
- No ads and tracking
- In-depth guides for developers and sysadmins at Opensourceflare✨
- Join my Patreon to support independent content creators and start reading latest guides:
- How to set up Redis sentinel cluster on Ubuntu or Debian Linux
- How To Set Up SSH Keys With YubiKey as two-factor authentication (U2F/FIDO2)
- How to set up Mariadb Galera cluster on Ubuntu or Debian Linux
- A podman tutorial for beginners – part I (run Linux containers without Docker and in daemonless mode)
- How to protect Linux against rogue USB devices using USBGuard
Join Patreon ➔
To verify new path settings, enter:
$ echo $PATH
See also
🐧 Get the latest tutorials on Linux, Open Source & DevOps via
Category | List of Unix and Linux commands |
---|---|
Documentation | help • mandb • man • pinfo |
Disk space analyzers | df • duf • ncdu • pydf |
File Management | cat • cp • less • mkdir • more • tree |
Firewall | Alpine Awall • CentOS 8 • OpenSUSE • RHEL 8 • Ubuntu 16.04 • Ubuntu 18.04 • Ubuntu 20.04 |
Linux Desktop Apps | Skype • Spotify • VLC 3 |
Modern utilities | bat • exa |
Network Utilities | NetHogs • dig • host • ip • nmap |
OpenVPN | CentOS 7 • CentOS 8 • Debian 10 • Debian 8/9 • Ubuntu 18.04 • Ubuntu 20.04 |
Package Manager | apk • apt |
Processes Management | bg • chroot • cron • disown • fg • glances • gtop • jobs • killall • kill • pidof • pstree • pwdx • time • vtop |
Searching | ag • grep • whereis • which |
Shell builtins | compgen • echo • printf |
Text processing | cut • rev |
User Information | groups • id • lastcomm • last • lid/libuser-lid • logname • members • users • whoami • who • w |
WireGuard VPN | Alpine • CentOS 8 • Debian 10 • Firewall • Ubuntu 20.04 |
Comments on this entry are closed.
I am a newbie on Linux.
I would like to ask if I can include an environment variable (e.g. ARCHIVES) that points to a directory (e.g. EXPORT ARCHIVES=/some/path/directory) to the .bash_profile, so that I dont do exporting all the time, everytime I need to use the directory?
How to set the CLASSPATH??
Or add as follows to your .bashrc file:
“echo ‘export PATH=$PATH:/usr/local/bin’ >>
Isn’t echo ” ‘PATH=$PATH:/usr/local/bin’ >>
/.bashrc ” a better idea?
how can I remove a path variable??
Hi,
To remove a path, go to”File System”. Open
/etc folder and edit (that is, remove )the path from the ‘environment’ text file. You can edit using the sudo command. Following are the commands.
cd
cd etc
sudo gedit environment
After removing the path from the “environment” file, save and restart the machine
Hi,
There was one mistake. It is “cd /”, not “cd
”
To remove a path, go to”File System”. Open
/etc folder and edit (that is, remove )the path from the ‘environment’ text file. You can edit using the sudo command. Following are the commands.
cd /
cd etc
sudo gedit environment
After removing the path from the “environment” file, save and restart the machine
To add a PATH for any user with sh or bash shell permanantly use the following steps.
1. Create a new file .profile in root(/) directory.
2. Add the following lines into it
PATH= path to enter
export PATH
3.save the file
4.exit and login to server again
5.check using echo $PATH
IT will work. Please let me know if tou have any queries on this .
The above one is only for root user
When I run my program I get this result:
terminate called after throwing an instance of ‘std::logic_error’
what(): basic_string::_S_construct NULL not valid
Aborted
Is this a result of having the wrong environment variable on my path or what. The program compiles without any errors. This is happening on Ubuntu (Linux, OS 10.0)
Could any one explain me about the functionality of command in shell script
set -xv
. /opt/app/etl/bin/profile.ksh
. `dirname $0`/env.cfg
Print input commands and their arguments as they are executed –> when you use set -xv
Hi there, thanks fo the article!
FYI, I just tried the syntax above for a tcsh but it didn’t work.
This works:
(Include this line directly in your .cshrc file. This example adds a dir called
/bin and your current dir to the previously existing PATH)
(Or, if you don’t want to open and edit your
/.cshrc file, type this in a teminal:)
Thanks for the heads up. The faq has been updated with correct syntax. FYI, the syntax setenv PATH $
Appreciate your post.
it helps me lots thanks………….
Hi :
I am new to linux.
May I ask how to convert this bash to tcsh?
Best Regards,
McGrady
why would this code be on my computer in a install file with along with macports pubkey and several other files.
SET doesn’t seem to do anything.
PATH as a variable name is case sensitive by me, but in this tut, this gets ignored.
Very bad. Didn’t helped me at all.
by mistake i changed defaults PATH ,how can i get default PATH from command line
i can’t even vi that hiden files
I have a machine that is running on kernel 2.6.32-504.16.2.el6.x86_64, I want to build a custom kernel using the same kernel on the same machine, but when I run make menuconfig, I get the following error
*** Unable to find the ncurses libraries or the
*** required header files.
*** ‘make menuconfig’ requires the ncurses libraries.
***
*** Install ncurses (ncurses-devel) and try again.
***
make[1]: *** [scripts/kconfig/dochecklxdialog] Error 1
make: *** [menuconfig] Error 2
I have the ncurses installed already in /lib64 and modified my PATH to point to /lib64, but I still get the same error, it looks like that it can not be found. does anyone have an idea why this is not working?
Install “ncurses-devel” package and try again.
Источник
Как добавить путь к каталогу в переменную $PATH
Когда вы вводите команду в терминал Linux программа выполняется.
Обычно для выполнения пользовательской программы или скрипта нам нужно использовать полный путь к ней, например /path/to/script.sh или просто ./script.sh, если мы уже находимся в его постоянном каталоге.
В качестве альтернативы мы можем выполнять множество команд без указания путей, таких как например up, дата и т.д.
Причина, по которой нам не нужно указывать пути для некоторых команд, заключается в переменной $PATH.
Это переменная, которую можно настроить таким образам, чтобы указать нашей системе Linux, где искать определенные программы.
Таким образом, при вводе date в терминал Linux проверяет переменную $PATH, чтобы увидеть список каталогов для поиска программы.
В этом руководстве мы расммотрим, как добавить каталог в переменную $PATH на Linux.
Это позволит нам вызывать программу или скрипт из любой точки системы без необходимости указывать путь к месту, где мы их сохранили.
Далее покажем, как просматривать каталоги в $PATH и добавлять каталог временно или навсегда в переменную.
Просмотр текущих настроенных каталогов в $PATH
Просмотр текущих настроенных каталогов в $PATH
Просмотреть все каталоги, которые в настоящее время настроены в переменной $PATH вашей системы, очень просто.
Просто используйте команду echo вот таким образом:
Как видите, в $PATH уже хранится несколько разных каталогов.
Это как раз то, что позволяет нам запускать так много команд по умолчанию, не указывая их полное расположение в терминале.
Чтобы узнать, к какому каталогу принадлежит команда, вы можете использовать команду which.
Как временно добавить каталог в $PATH
Чтобы добавить каталог в $PATH для текущего сеанса, используйте следующий синтаксис.
В этом примере мы добавим каталог /bin/myscripts.
Как добавить каталог в $PATH на постоянной основе
Чтобы добавить каталог в $PATH навсегда, нам нужно отредактировать файл .bashrc пользователя, у которого вы хотите это дело изменить.
Используйте nano или ваш любимый текстовый редактор, чтобы открыть файл, хранящийся в домашнем каталоге.
Источник