Linux bash path add

Переменная 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 и вручную дописать туда нужное значение:

Можно поступить и иначе. Содержимое файла .bashrc выполняется при каждом запуске оболочки Bash. Если добавить в конец файла команду export, то для каждой загружаемой оболочки будет автоматически выполняться добавление имени требуемой папки в переменную PATH, но только для текущего пользователя:

Выводы

В этой статье мы рассмотрели вопрос о том, зачем нужна переменная окружения PATH в Linux и как добавлять к её значению новые пути поиска исполняемых и связанных с ними файлов. Как видите, всё делается достаточно просто. Таким образом вы можете добавить столько папок для поиска и хранения исполняемых файлов, сколько вам требуется.

Обнаружили ошибку в тексте? Сообщите мне об этом. Выделите текст с ошибкой и нажмите Ctrl+Enter.

Читайте также:  Linux взаимодействие между процессами

Источник

Adding a Path to the Linux PATH Variable

announcement - icon

The Kubernetes ecosystem is huge and quite complex, so it’s easy to forget about costs when trying out all of the exciting tools.

To avoid overspending on your Kubernetes cluster, definitely have a look at the free K8s cost monitoring tool from the automation platform CAST AI. You can view your costs in real time, allocate them, calculate burn rates for projects, spot anomalies or spikes, and get insightful reports you can share with your team.

Connect your cluster and start monitoring your K8s costs right away:

1. Overview

In this quick tutorial, we’ll focus on how to add a path to the Linux PATH variable in Bash and Zsh.

Since the methods we use for Bash work for Zsh as well, we’ll first address how to add a new path to the PATH variable in Bash.

Then we’ll explore some Zsh specific ways to do the job.

2. PATH Variable

The PATH variable is an environment variable containing an ordered list of paths that Linux will search for executables when running a command. Using these paths means that we don’t have to specify an absolute path when running a command.

For example, if we want to print Hello, world! in Bash, the command echo can be used rather than /bin/echo, so long as /bin is in PATH:

Linux traverses the colon-separated paths in order until finding an executable. Thus, Linux uses the first path if two paths contain the desired executable.

We can print the current value of the PATH variable by echoing the PATH environment variable:

We should see a list of colon-separated paths (exact paths may differ):

/usr/lib/lightdm/lightdm:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games

3. Adding a New Path in Bash

We can add a new path to the PATH variable using the export command.

To prepend a new path, such as /some/new/path, we reassign the PATH variable with our new path at the beginning of the existing PATH variable (represented by $PATH):

export PATH=/some/new/path:$PATH

To append a new path, we reassign PATH with the new path at the end:

export PATH=$PATH:/some/new/path

4. Persisting Changes in Bash

When we use the export command and open a new shell, the added path is lost.

4.1. Locally

To persist our changes for the current user, we add our export command to the end of ~/.profile. If the ~/.profile file doesn’t exist, we should create it using the touch command:

Then we can add our export command to ~/.profile.

Additionally, we need to open a new shell, or source our ~/.profile file to reflect the change. We’d execute:

Or if we’re using Bash, we could use the source command:

We could also append our export command to ~/.bash_profile if we’re using Bash, but our changes won’t be reflected in other shells, such as Zsh.

We shouldn’t add our export command to ~/.bashrc because only interactive Bash shells read this configuration file. If we open a non-interactive shell or a shell other than Bash, our PATH change won’t be reflected.

4.2. Globally

We can add a new path for all users on a Unix-like system by creating a file ending in .sh in /etc/profile.d/ and adding our export command to this file.

Читайте также:  Как убрать панель linux

For example, we can create a new script file, /etc/profile.d/example.sh, and add the following line to append /some/new/path to the global PATH:

export PATH=$PATH:/some/new/path

All of the scripts in /etc/profile.d/ will be executed when a new shell initializes. Therefore, we need to open a new shell for our global changes to take effect.

We can also add our new path directly to the existing PATH in the /etc/environment file:

The /etc/environment file isn’t a script file, it only contains simple variable assignments, and it’s less flexible than a script. Because of this, making PATH changes in /etc/environment is discouraged. We recommend adding a new script to /etc/profile.d instead.

5. $PATH in Zsh

Zsh is getting popular, since it provides a rich set of excellent features. Now let’s see how to add a new path in Zsh.

5.1. Adding a New Path Entry in Zsh

So far, we’ve learned methods for adding a new path in Bash. First of all, these methods work for Zsh too.

If our shell is Zsh, we can append a new path to the $PATH variable in the array way:

zsh% echo $PATH /usr/local/bin:/usr/bin:/bin zsh% path+=/a/new/path zsh% echo $PATH /usr/local/bin:/usr/bin:/bin:/a/new/path

As the example above shows, we used path+=/a/new/path to append a new path to $PATH. Please note that we used the lower case path+=….

This is because path is an array. It also affects its upper-case partner equivalent $PATH. Zsh has bound these two with typeset builtin by default.

Similarly, we can prepend a new path in the array way too:

zsh% path=('/another/new/path' $path) zsh% echo $PATH /another/new/path:/usr/local/bin:/usr/bin:/bin:/a/new/path

However, after adding the new entry to the path array, we shouldn’t forget “export $PATH,” as we did in Bash.

5.2. Persisting Changes

For compatibility, Zsh first sources .profile, then sources zshenv and zshrc. That is to say, the settings in zshenv and zshrc may override configurations in .profile. Therefore, for Zsh, it would be good if we put settings in Zsh specific configuration files.

Similar to the bashrc file, /etc/zshrc or ~/.zshrc is only for the interactive shell. So it’s not an ideal place to store $PATH.

Thus, if we want all Zsh users to have the $PATH setting, effectively setting $PATH globally, we can put it in /etc/zshenv. It’s worth mentioning that this file may not exist, and we can create it if we want to set something globally.

On the other hand, if we would like to set $PATH for our user only, we can put $PATH in ~/.zshenv.

6. Conclusion

In this article, we learned how Linux uses the PATH variable to find executables when running a command.

We can prepend or append to PATH, but to persist these changes, we need to put the PATH configuration in the right configuration file.

This table can summarize it clearly:

Local Global
Bash ~/.profile A .sh file in /etc/profile.d
Zsh ~/.zshenv /etc/zshenv

Источник

How to Add a Directory to PATH in Linux

When you type a command on the command line, you’re basically telling the shell to run an executable file with the given name. In Linux, these executable programs like ls , find , file and others, usually live inside several different directories on your system. Any file with executable permissions stored in these directories can be run from any location. The most common directories that hold executable programs are /bin , /sbin , /usr/sbin , /usr/local/bin and /usr/local/sbin .

Читайте также:  Linux flash plugin installed

But how does the shell knows, what directories to search for executable programs? Does the shell search through the whole filesystem?

The answer is simple. When you type a command, the shell searches through all directories specified in the user $PATH variable for an executable file of that name.

This article shows how to add directories to your $PATH in Linux systems.

What is $PATH in Linux #

The $PATH environmental variable is a colon-delimited list of directories that tells the shell which directories to search for executable files.

To check what directories are in your $PATH , you can use either the printenv or echo command:

The output will look something like this:

/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games:/snap/bin 

If you have two executable files sharing the same name located in two different directories, the shell will run the file that is in the directory that comes first in the $PATH .

Adding a Directory to your $PATH #

There are situations where you may want to add other directories to the $PATH variable. For example, some programs may be installed in different locations, or you may want to have a dedicated directory for your personal scripts, but be able to run them without specifying the absolute path to the executable files. To do this, you simply need to add the directory to your $PATH .

Let’s say you have a directory called bin located in your Home directory in which you keep your shell scripts. To add the directory to your $PATH type in:

The export command will export the modified variable to the shell child process environments.

You can now run your scripts by typing the executable script name without needing to specify the full path to the file.

However, this change is only temporary and valid only in the current shell session.

To make the change permanent, you need to define the $PATH variable in the shell configuration files. In most Linux distributions when you start a new session, environment variables are read from the following files:

  • Global shell specific configuration files such as /etc/environment and /etc/profile . Use this file if you want the new directory to be added to all system users $PATH .
  • Per-user shell specific configuration files. For example, if you are using Bash, you can set the $PATH variable in the ~/.bashrc file. If you are using Zsh the file name is ~/.zshrc .

In this example, we’ll set the variable in the ~/.bashrc file. Open the file with your text editor and add the following line at the end of it:

Save the file and load the new $PATH into the current shell session using the source command:

To confirm that the directory was successfully added, print the value of your $PATH by typing:

Conclusion #

Adding new directories to your user or global $PATH variable is pretty simple. This allows you to execute commands and scripts stored on nonstandard locations without needing to type the full path to the executable.

The same instructions apply for any Linux distribution, including Ubuntu, CentOS, RHEL, Debian, and Linux Mint.

Feel free to leave a comment if you have any questions.

Источник

Оцените статью
Adblock
detector