Linux change which path

How can I edit the $PATH on linux?

To permanently store your path, you have a few options.

I suggest you read the Ubuntu community wiki on Environment Variables but the short answer is the best place is ~/.profile for your per-user PATH setting or /etc/profile for global settings.

Change PATH:

export PATH=$PATH:/your/new/path/here 
export PATH=:/your/new/path/here:/another/new/path/here 

It is important to note that there are many occasions your profile is not run (such as when a script is run by cron). If you need a specific path to be set in PATH, a script must set that path. That said, scripts should never rely on anything being in their paths and should always use absolute paths, anything else is a security issue.

Reader, if you want to edit the $PATH on Linux, not just add a path to it, see the answer to superuser.com/questions/1353497/removing-directories-from-path instead.

PATH=$PATH:newPath1:newPAth2 export PATH 

It depends on the shell you’re using. On Solaris (I know the question is about Linux) one of the shells (can’t remember which one off the top of my head) requires that you do the export separately from setting the value in a script. So I’ve just gotten into the habit of doing it on 2 lines.

You can also put this in the global environment:

sudo emacs /etc/environment 

Append to the entries already in your path

It has already been answered on how to do that, but I’d like to give you a little tip. Here is whatI do:

I have a directory called .bash.d in my $HOME and within that I keep a set of shell scripts that do stuff to my environment (for instance setup maven correctly, modify the path, set my prompt etc.). I keep this under version control by using git, which makes it easy to go back to a working version of your env, if you screw something up badly. To get all the modifications, I simply source all files in that dir at the end of my .bashrc like this:

for i in $HOME/.bash.d/*; do source $i; done unset i 

This gives you a very flexible environment that you can easily modify and restore + you are able to export it to other machines just by using git.

Читайте также:  Linux mint точка доступа wifi

Источник

Переменная 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 в конфигурационном системном файле.

Читайте также:  Linux mint увеличение swap

В ОС Ubuntu значение переменной PATH содержится в файле /etc/environment, в некоторых других дистрибутивах её также можно найти и в файле /etc/profile. Вы можете открыть файл /etc/environment и вручную дописать туда нужное значение:

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

Выводы

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

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

Источник

What’s the correct way to change the `PATH` environmental variable?

When it comes to changing the PATH environment variable (say, in «~/.bashrc»), I’ve seen some different ways of doing it:

PATH=$PATH:/new/path PATH="$PATH:/new/path" export PATH = $PATH:/new/path export PATH = $:/new/path setenv PATH $PATH:/new/path 

What are the < >for? When are the » » needed? When to use export or setenv ? Btw, my Ubuntu 14.04 doesn’t have a manual entry for export , but it has one for setenv . Why?

1 Answer 1

When it comes to changing the PATH environment variable (say, in «~/.bashrc»), I’ve seen some different ways of doing it

Some of them are valid ways of setting $PATH , but some of them are not valid ways of setting $PATH ; most have the same catch and some differ in their scope;

Speaking of the syntax (in Bash / compatible shells);

  • PATH=$PATH:/new/path : is ok, but you’ll need to escape spaces in «/new/path», if any;
  • PATH=»$PATH:/new/path» : is ok, and you won’t need to escape spaces in «/new/path», if any;
  • export PATH = $PATH:/new/path : is not ok, as you can’t have spaces before / after an assignment operator (and you’d need to escape spaces in «/new/path»);
  • export PATH = $:/new/path : same as export PATH = $PATH:/new/path ;
  • setenv PATH $PATH:/new/path : setenv is a csh built-in; it should be the same as PATH=$PATH:/new/path ;
Читайте также:  Wsl install linux kernel

Single / double quotes both prevent Bash from breaking on whitespaces; single quotes prevent Bash from performing parameter expansions, command substitutions or arithmetic expansions, forcing Bash to interpret the enclosed string literally; double quotes instead don’t prevent Bash to perform parameter expansions, command substitutions or arithmetic expansions, and in the second case they are needed in order to allow a parameter expansion on $PATH ;

Braces are required in case the character following a variable is a valid character for a variable name, however : is not, so in the fourth case they’re not really needed;

Speaking of the differences between var=value , export var=value and setenv var value ;

  • var=value sets the value of $var in the current shell; forked shells / processes won’t inherit the variable nor its value;
  • export var=value sets the value of $var in the current environment; forked shells / processes will inherit the variable and its value;
  • setenv PATH $PATH:/new/path : same as export var=value ;
$ foo=bar $ bash $ echo $foo $ exit exit $ export foo=bar $ bash $ echo $foo bar 

By the way, my Ubuntu 14.04 doesn’t have a manual entry for export , but it has one for setenv . Why?

If you type man setenv , you get the output of man 3 setenv , which is the manual entry of the setenv() function from the «Linux Programmer’s Manual»; as said before, there’s no setenv command in Ubuntu nor built-in in Bash named setenv , although there’s a setenv built-in in csh ;

export instead is a Bash built-in, and to get informations about it you’ll have to run help export :

$ help export export: export [-fn] [name[=value] . ] or export -p Set export attribute for shell variables. Marks each NAME for automatic export to the environment of subsequently executed commands. If VALUE is supplied, assign VALUE before exporting. Options: -f refer to shell functions -n remove the export property from each NAME -p display a list of all exported variables and functions An argument of `--' disables further option processing. Exit Status: Returns success unless an invalid option is given or NAME is invalid. 

Источник

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