What are the Default $PATH Values?
But in a minimal chroot environment created by debootstrap , $PATH only contains:
# echo $PATH /usr/sbin:/usr/bin:/sbin:/bin
Environment path values are stored in .bashrc file in ubuntu.
The system-wide PATH variable is defined in /etc/environment
Thanks — I couldn’t find where this file was actually sourced, but it appears to be included by PAM, in e.g. /etc/pam.d/login (and cron, su, etc)
bash will set PATH to a hard-coded default value if it’s not set in the environment:
$ env -i bash -c 'echo $PATH' /usr/local/bin:/usr/local/sbin:/usr/bin:/usr/sbin:/bin:/sbin:.
We can check that this value is indeed hard-coded, and not read from the environment or some file, using the strings utility:
$ strings /bin/bash | grep /usr/sbin /usr/local/bin:/usr/local/sbin:/usr/bin:/usr/sbin:/bin:/sbin:.
However, I get a different result on my Arch Linux machine:
$ env -i bash -c 'echo $PATH' /usr/local/sbin:/usr/local/bin:/usr/bin
So, the default is chosen at the time the bash binary was built, which depends on the Linux distribution in use.
PATH
The search path for commands. It is a colon-separated list of directories in which the shell looks for commands (see COMMAND EXECUTION below). A zero-length (null) directory name in the value of PATH indicates the current directory. A null directory name may appear as two adjacent colons, or as an initial or trailing colon. The default path is system-dependent, and is set by the administrator who installs bash. A common value is /usr/local/bin:/usr/local/sbin:/usr/bin:/usr/sbin:/bin:/sbin .
Here, «installs» likely refers to make install (as opposed to installing a pre-built binary using a package manager), so «administrator» would refer to the distribution vendor.
The «INVOCATION» section in the man page describes the startup process, which may affect the initial value of the variable.
Переменная 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.
How to add usr/local/bin to path environment variable on ubuntu 12.0.4?
And I’m stuck as the guy has a wrong assumption. How do I add usr/local/bin to the path environment variable?
2 Answers 2
You can add this to your ~/.bashrc file:
If you don’t know how, you can just execute this line in a Terminal:
echo "PATH=\$PATH:/usr/local/bin" >> ~/.bashrc
You can also check what’s in your PATH by typing in the Terminal
Thankyou. Ok this is what i did I entered gedit ~/.bashrc and its showing lots of code. where am I supposed to add the line you mentioned above.
Ive executed the line in the terminal and it shows the following line at the end of the bashrc file PATH=$PATH:/usr/local/bin Now when I type ruby -v its says The program ‘ruby’ can be found in the following packages: * ruby1.8 * ruby1.9.1 Try: sudo apt-get install
@user2104149 Yes, twice actually 🙂 You seem to be using an old book, you should go for ruby 1.9.2 (or 1.9.1 if it’s already installed in your computer). Versions 1.8.x are not supported anymore.
Yes I but as I dont have any Software background and ruby gets really tricky with versions so I though i should rather start with the 1.8.6 as im actually learning rails. Rails 2 works best with the version 1.8. Once i undesrtand what rails is i will shift to the latest stables version before i start any programming. I was told that its better to undersatand rail 2 before you start on rails 3. I ve just started. With all the help here and nice people like yourself I guess im gonna reach there fast 🙂 Thankyou