What is file path in linux

What is file path in linux

PATH is an environmental variable in Linux and other Unix-like operating systems that tells the shell which directories to search for executable files (i.e., ready-to-run programs) in response to commands issued by a user. It increases both the convenience and the safety of such operating systems and is widely considered to be the single most important environmental variable.

Environmental variables are a class of variables (i.e., items whose values can be changed) that tell the shell how to behave as the user works at the command line (i.e., in a text-only mode) or with shell scripts (i.e., short programs written in a shell programming language). A shell is a program that provides the traditional, text-only user interface for Unix-like operating systems; its primary function is to read commands that are typed in at the command line and then execute (i.e., run) them.

PATH (which is written with all upper case letters) should not be confused with the term path (lower case letters). The latter is a file’s or directory’s address on a filesystem (i.e., the hierarchy of directories and files that is used to organize information stored on a computer). A relative path is an address relative to the current directory (i.e., the directory in which a user is currently working). An absolute path (also called a full path) is an address relative to the root directory (i.e., the directory at the very top of the filesystem and which contains all other directories and files).

A user’s PATH consists of a series of colon-separated absolute paths that are stored in plain text files. Whenever a user types in a command at the command line that is not built into the shell or that does not include its absolute path and then presses the Enter key, the shell searches through those directories, which constitute the user’s search path, until it finds an executable file with that name.

The concentrating by default of most executable files in just a few directories rather than spread all over the filesystem and the use of the PATH variable to find them eliminates the need for users to remember which directories they are in and to type their absolute path names. That is, any such program can be run by merely typing its name, such as ls instead of /bin/ls and head instead of /usr/bin/head, regardless of where the user is currently working on the filesystem. This also greatly reduces the possibility of damage to data or even to the system as a whole from the accidental running of a script that has the same name as a standard command. 1

A list of all the current environmental variables and their values for the current user, including all the directories in the PATH variable, can be seen by running the env command without any options or arguments (i.e., input data), i.e.,

As there can be considerable output, it can be convenient to modify this command so that it displays just the PATH environmental variable and its value. This can be accomplished by using a pipe (represented by the vertical bar character) to transfer the output of env to the grep filter and use PATH as an argument to grep, i.e.,

Читайте также:  Инструменты для создания образа windows

Another way to view the contents of just PATH alone is by using the echo command with $PATH as an argument:

echo repeats on the display screen whatever follows it on the command line. The dollar sign immediately preceding PATH tells echo to repeat the value of the variable PATH rather than its name.

Each user on a system can have a different PATH variable. When an operating system is installed, one default PATH variable is created for the root (i.e., administrative) account and another default is created that will be applied to all ordinary user accounts as they are added to the system. The PATH variable for the root user contains more directories than for ordinary users because it includes directories, such as /sbin and /usr/sbin, that contain programs that are normally used only by that user.

PATH variables can be changed relatively easily. They can be changed just for the current login session, or they can be changed permanently (i.e., so that the changes will persist through future sessions).

It is a simple matter to add a directory to a user’s PATH variable (and thereby add it to the user’s default search path). It can be accomplished for the current session by using the following command, in which directory is the full path of the directory to be entered:

For example, to add the directory /usr/sbin, the following would be used:

An alternative is to employ the export command, which is used to change aspects of the environment. Thus, the above absolute path could be added with the following two commands in sequence

or its single-line equivalent

That the directory has been added can be easily confirmed by again using the echo command with $PATH as its argument.

An addition to a user’s PATH variable can be made permanent by adding it to that user’s .bash_profile file. .bash_profile is a hidden file in each user’s home directory that defines any specific environmental variables and startup programs for that user. A hidden file is a file whose name begins with a dot (i.e., a period) and which is normally not visible; however, it can be seen by using the ls (i.e., list) command with its -a (i.e., all) option.

Thus, for example, to add a directory named /usr/test to a user’s PATH variable, it should be appended with a text editor to the line that begins with PATH so that the line reads something like PATH=$PATH:$HOME/bin:/usr/test. It is important that each absolute path be directly (i.e., with no intervening spaces) preceded by a colon.

It is sometimes desired to run a script or program which has been installed in a user’s home directory or some other location that is not in the user’s default search path. Such script or program can, of course, be run by typing in its absolute path. But an often more convenient alternative when the script or program is in the current directory is to merely precede the command name with a dot slash (i.e., a dot followed by a forward slash and with no intervening spaces). The dot is used in paths to represent the current directory and the slash is used as a directory separator and to separate directory names from file names.

MS-DOS also uses a PATH variable. However, it differs from Unix-like operating systems in that it searches the user’s current directory before it searches in any directories in that variable.

________
1 An extreme example would be the situation in which an ordinary user created a shell script such as rm -r /, which would delete all files and directories in the system for which the user had writing permission, and named this script ls. Were the system administrator to navigate to the directory in which this script was located and attempt to run the standard ls command in order to view the contents of that directory, the shell would instead run the script with the same name and thereby remove the contents of all currently mounted partitions on the computer!

Читайте также:  Windows toolkit последняя версия

Created June 2, 2006. Updated July 8, 2007.
Copyright © 2006 — 2007 The Linux Information Project. All Rights Reserved.

Источник

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:

Источник

Читайте также:  Настройка автовхода windows 10
Оцените статью