How to add path variable linux

Переменная 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 и как добавлять к её значению новые пути поиска исполняемых и связанных с ними файлов. Как видите, всё делается достаточно просто. Таким образом вы можете добавить столько папок для поиска и хранения исполняемых файлов, сколько вам требуется.

Источник

How to Add Directory to $PATH Variable in Linux

The environment variables control the behavior of the shell. Environment variables are the variables that set the working environment of the shell. Some of the environment variables are USER, HOME, SHELL, PWD, SHELL, PS1, PS2, etc.

The HOME variable contains the path of home directory of the user. Similarly, the other variables contain other values needed for the operation of the shell. This tutorial discusses an important shell environment variable called PATH and how you can add values to this variable.

In this tutorial, I will show you how to add a directory to your PATH variable in Linux. The $PATH variable display a list of all directories where Linux commands or executable files reside.

Читайте также:  Как добавлять репозитории linux mint

Show Variable Value

The shell interprets the value of a variable by the «$» sign. To display the value of a variable, precede the variable with «$» sign. The «echo» command is used to display the value of the variable. Let us display the value of the variable HOME:

What is PATH variable

The commands in Unix/Linux are the binary executable files. When you enter a command at the shell prompt, the binary file with that name is executed. So when a command is entered at the prompt, the shell searches for that binary file in some directories. These directories are listed in the PATH variable. Without the PATH variable, no command can be executed.

Now let’s show the current value of PATH variable.

The directories in this variable are separated by : (colon). At present, the shell searches the following directories for the binary executable files:

The order of the search path is also important. Suppose, you enter the ls command at the command line. Now at first, the shell searches /usr/local/sbin directory. If it does not find an executable file with that name in this directory, then it looks in the /usr/local/bin directory and then /usr/sbin, followed by /usr/bin and so on. If none of the directories specified in the PATH variable contains that file, then «command not found» error is displayed on the terminal.

Which command is used to find out the directory that contains a particular command. This command also uses the PATH variable to search for the command location. For example,

It means that when you type ls at the prompt and execute the ls command, then “/bin/ls” file is executed. In other words, location of ls command is “/bin/ls”. You can also find path of other commands with «which» command.

Add Directories to PATH

Now assume that you create your shell scripts in bin directory located in your home directory, i.e. in “

represents home directory); and now you want to add this directory to your PATH variable as well, so that you do not have to specify the path to your script every time you run the script.

The value of a variable is changed with the syntax “variable=value”. But here, we want to add a directory to the PATH variable. We can’t just write “PATH=

/bin” because it will overwrite all the previous values. We want to preserve the existing values contained in the variable. So, we use value of the variable, i.e. $PATH, for assigning new value. If it sounds confusing, don’t worry, it will be clear with the following command:

The «/root/bin» directory (/root is root user’s home directory) has been added to the path variable. Now you can execute your script as a command, without specifying the full path to the script. The export command ensures that the variables are passed to the child processes without affecting the existing environment variables.

Let’s take another example where you like to add a directory (/home/tom/scripts) for a user named ‘tom’ that may contain his scripts or binaries. You can place custom script path at the front of the PATH if the system wants to find it first.

To remove a path from the $PATH variable from the current session there is no straightforward command. Just get the current values of $PATH variable using «echo $PATH» and export again after removing unwanted paths. Or simply start a new shell.

How to Set PATH permanent

To set up $PATH variable permanent, have to add the above-mentioned command to the respective configuration file that launches shell. The most common file is

/.bashrc if you are using Bash. For zsh, add it to

You can appropriately use /etc/environment and /etc/profile which defines global environment variables.

/.bashrc file in your favorite text editor and run the following command:

And, to load variable to the current shell run source command, type:

Читайте также:  Как проверить локальную сеть linux

Conclusion

In this tutorial, we have learned how to add a directory to the PATH environment variable in Linux. Hope you enjoyed reading this and please leave your suggestion in the below comment section.

Источник

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 $:$/bin:. can be updated using the following syntax too:

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.

Источник

Читайте также:  Тестирование сетевых интерфейсов linux
Оцените статью