- Display or print UNIX / Linux path
- Display current PATH in Linux
- What is a PATH in Linux or Unix?
- How to modify current PATH
- Summing up
- Setting up PATH permanently
- Printing PATH in Linux or Unix
- Navigating Your File System in Linux
- This chapter is from the book
- This chapter is from the book
- This chapter is from the book
- List Files and Folders
- Переменная PATH в Linux
- Переменная PATH в Linux
- Выводы
- Как получить полный путь к файлу?
- В окнах вы можете: —
- Удерживайте клавишу shift и щелкните правой кнопкой мыши по файлу, который дает вам опцию с именем «Copy as Path»
- В Linux вы можете использовать команду: —
Display or print UNIX / Linux path
I am a new Linux or Unix system user and I am using a Debian Linux VPS. How do I print current path settings under BASH or sh or ksh shell?
In Linux or Unix-like file systems, the human-readable address of a resource is defined by PATH shell variable. On Unix / Linux like operating systems, (as well as on DOS / Windows and its descendants), PATH is an environment variable listing a set of paths to directories where executable may be found. This page explains how to print path variable using various commands under Linux and Unix-like systems.
Tutorial details | |
---|---|
Difficulty level | Easy |
Root privileges | No |
Requirements | Linux, Unix, or macOS terminal app |
Est. reading time | 2 minutes |
Display current PATH in Linux
Use the echo command as follows:
echo «$PATH»
Here is my settings from Debian Linux system:
You can use the printf command as well to show the current PATH settings:
$ printf «%s\n» $PATH
Here is my settings from macOS/macOS X Unix desktop:
What is a PATH in Linux or Unix?
A PATH is nothing but the search path for commands. It is a colon-separated list of directories in which the shell looks for commands.
How to modify current PATH
Use the export command to add /opt/games to PATH, enter:
export PATH=$PATH:/opt/games
To format your PATH variable for easy viewing, add following code to your bash startup file (such as
- 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 ➔
Now just run path:
$ path
Here is what I see on CentOS/RHEL/Fedora Linux:
Another option is to run the following command:
echo «$PATH» | tr «:» «\n» | nl
Fig.01: Printing $PATH on Linux or Unix-like system
Summing up
The default shell path ( $PATH variable) is system-dependent, and is set by the administrator who installs bash or ksh or any other shell. However, developers and other Linux and Unix system users can set up their own path using the export command under bash/sh/ksh.
Setting up PATH permanently
Users can edit the
/.profile to set up their path as follows for bash:
Printing PATH in Linux or Unix
Now run:
echo «$PATH»
printf «%s\n», $PATH
How to Checking Path in Unix and Linux
🐧 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.
accepts an optional argument that is the name of a path-like variable.
Hi,
I did not get either of those path() working. I assume my version of unix does not recognize IFS when applying printf. But this works:
echo $PATH | sed ‘s/\:/\n/g’ | sort
Thanks for that, Pekka. I started using zsh, which has the same problem you described. The original solution works wonderfully in bash, but yours works in zsh.
Ugghh curly quotes. Could not copy and paste.
I am using Zshell, Prezto, OSX. The sed command replaces the : with an n
To get one path per line I used:
Hello Sir;
I am trying to run a program on a cluster and every time I run the program I have this message: mpiexec was unable to launch the specified application as it could not find an executable. ”
so I am suggesting that the program is not recognize the mpixec path. so I need to add the MPI path in my working directory.
my question is how to set this up?
hola necesito decargar un editor ok lo descargo en superusuario y cuando esta descargando me dice q no puede continuar … me aparece esto : dpkg: aviso: `ldconfig’ no se ha encontrado en el PATH o no es ejecutable.
dpkg: aviso: `start-stop-daemon’ no se ha encontrado en el PATH o no es ejecutable.
dpkg: error: 2 expected programs not found in PATH or not executable.
Note: root’s PATH should usually contain /usr/local/sbin, /usr/sbin and /sbin.
E: Sub-process /usr/bin/dpkg returned an error code (2)
Un paquete no se pudo instalar. Tratando de recuperarlo:
dpkg: aviso: `ldconfig’ no se ha encontrado en el PATH o no es ejecutable.
dpkg: aviso: `start-stop-daemon’ no se ha encontrado en el PATH o no es ejecutable.
dpkg: error: 2 expected programs not found in PATH or not executable.
Note: root’s PATH should usually contain /usr/local/sbin, /usr/sbin and /sbin.
help me..
In below code:
Node=/liferay-portal-5.2.0/jboss-tomcat-4.2.3/server/node_portal
export jboss=$Node/../..
echo $jboss
But I need Output as :
Please help me out in this.
How can I make PATH easily to view when I just execute the script? Thanks
You can search/replace within variables as you expand them.
The following replaces ‘:’ with newlines while expanding $PATH, so it’s done without using external commands:
Источник
Navigating Your File System in Linux
This chapter is from the book
This chapter is from the book
This chapter is from the book
This chapter introduces the basic commands you’ll find yourself using several times every day. Think of these as the hammer, screwdriver, and pliers that a carpenter keeps in the top of his toolbox. After you learn these commands, you can start controlling your shell and finding out all sorts of interesting things about your files, folders, data, and environment. In particular, you’ll be learning about some of the metadata—the data describing your data—that Linux has to keep track of, and it may just surprise you how much there is.
When I updated this book for its second edition, I removed the section about mkdir -v (which shows you what mkdir is doing as it does it) and rm -v (which does the same thing, but for rm). You can find the original text on my website, www.granneman.com/linux-redactions.
Also, I took the sections on touch, mkdir, cp, mv, rm, and rmdir and used them to create a new Chapter 3 titled “Creation and Destruction” (which of course renumbered everything after it!). Finally, the section on su was moved to Chapter 8, “Ownership and Permissions,” which makes a lot more sense.
List Files and Folders
The ls command is probably the one that people find themselves using the most. After all, before you can manipulate and use files in a directory (remember, file and directory are interchangeable), you first have to know what files are available. That’s where ls comes in, as it lists the files and subdirectories found in a directory.
The ls command might sound simple—just show me the files!—but there are a surprising number of permutations to this amazingly pliable command, as you’ll see.
Typing ls lists the contents of the directory in which you’re currently working. When you first log in to your shell, you’ll find yourself in your home directory. Enter ls, and you might see something like the following:
Источник
Переменная 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 и как добавлять к её значению новые пути поиска исполняемых и связанных с ними файлов. Как видите, всё делается достаточно просто. Таким образом вы можете добавить столько папок для поиска и хранения исполняемых файлов, сколько вам требуется.
Источник
Как получить полный путь к файлу?
Есть ли простой способ распечатать полный путь file.txt ?
Я полагаю, вы используете Linux.
Я нашел утилиту под названием realpath в coreutils 8.15.
Согласно комментариям @ styrofoam-fly и @ Arch-standton, только realpath не проверяет существование файла, для решения этой проблемы добавьте аргумент e : realpath -e file
Следующее обычно делает трюк:
Я знаю есть более простой способ, но черт возьми, если я смогу это найти .
Если вы находитесь в том же каталоге, что и файл:
Замените file.txt вашим целевым именем файла.
В окнах вы можете: —
Удерживайте клавишу shift и щелкните правой кнопкой мыши по файлу, который дает вам опцию с именем «Copy as Path»
В Linux вы можете использовать команду: —
- realpath yourfile , чтобы получить полный путь к файлу, как предлагают многие.
Я знаю, что это старый вопрос сейчас, но просто добавить к информации здесь:
Команду Linux which можно использовать для поиска пути к файлу командного файла, т.е.
Вы можете использовать скрипт fpn (полный путь) :
Работает на Mac, Linux, * nix:
Это даст вам CSV всех файлов в текущем каталоге:
Вывод этого может быть легко скопирован в список python или любую подобную структуру данных.
В Mac OS X я заменил утилиты, поставляемые с операционной системой, и заменил их более новой версией coreutils. Это позволяет вам получать доступ к таким инструментам, как readlink -f (для абсолютного пути к файлам) и realpath (абсолютный путь к каталогам) на вашем Mac.
Версия Homebrew добавляет «G» (для GNU Tools) перед именем команды — так что эквивалентами становятся greadlink -f FILE и grealpath DIRECTORY .
Инструкции по установке coreutils/GNU Tools на Mac OS X с помощью Homebrew можно найти в этот раздел StackExchange .
NB. Команды readlink -f и realpath должны работать «из коробки» для пользователей не-Mac Unix.
Это объяснение того, что происходит в @ ZeRemz’s ответ :
- Этот скрипт получает относительный путь в качестве аргумента «$1»
- Затем мы получаем dirname часть этого пути (вы можете передать либо dir, либо файл в этот скрипт): dirname «$1»
- Затем мы cd «$(dirname «$1») в этот относительный каталог
- && pwd -P и получите абсолютный путь к нему. Опция -P позволит избежать всех символических ссылок
- После этого мы добавляем базовое имя к абсолютному пути: $(basename «$1»)
- В качестве последнего шага мы echo это
В аналогичном сценарии я запускаю скрипт cshell из другого места. Для установки правильного абсолютного пути скрипта, чтобы он работал только в указанном каталоге, я использую следующий код:
$0 хранит точную строку, как был выполнен скрипт.
Например, если скрипт был запущен следующим образом: $> ../../test/test.csh , $script_dir будет содержать /home/abc/sandbox/v1/../../test
Это наивно, но я должен был сделать это, чтобы быть POSIX-совместимым. Требуется разрешение на CD в каталог файла.
Вы можете сохранить это в вашем «Shell.rc» или просто положить в консоль
псевдоним ap = «absolute_path»
Это сработало очень хорошо для меня. Он не зависит от файловой системы (pro/con в зависимости от необходимости), поэтому он будет быстрым; и он должен быть переносимым для большинства * NIX. Предполагается, что переданная строка действительно относится к PWD, а не к какому-либо другому каталогу.
Вы можете использовать эту функцию. Если имя файла задано без относительного пути, то предполагается, что оно присутствует в текущем рабочем каталоге:
Использование с относительным путем:
С пробелами в имени файла:
В Mac указанном ниже строке работает. Не нужно добавлять какие-либо необычные линии.
Источник