Add directory to path permanently


 
Thread Tools Search this Thread
Operating Systems Linux Red Hat Add directory to path permanently
# 8  
Old 10-17-2018
Quote:
Originally Posted by cmccabe
I apologize, I would do the below in ubuntu 14.04

Code:
echo export PATH=$PATH:"/usr/bin/gatk-4.0.10.1" >> ~/.bashrc

to update .bashrc, although that doesn't work either. Thank you Smilie.

though if I log out then login, it's fine.

so maybe, source ~/.bashrc after the command?
A few clarifications: you can change your environment (of which the PATH variable is a part) on the command line. Enter set or env at the command line to see what your current environment is. Basically, it is a set of declarations of variables in the form:

Code:
VARIABLE="some value"

and shell functions. Your PATH statement just modifies this value:

Code:
export PATH=$PATH:"/usr/bin/gatk-4.0.10.1"

means: set the variable PATH ("PATH=") to what it contains now ("$PATH"), plus a colon (":") and a fixed string ("/usr/bin/gatk-4.0.10.1").

Again, you can do that on the command line (like you did), but this will be lost when you log out. The file ~/.bashrc now contains such collected command line settings and it is executed every time you log in. That means, to make the change last you will have to modify this file, like you did:

Code:
echo export PATH=$PATH:"/usr/bin/gatk-4.0.10.1" >> ~/.bashrc

That simply adds (">>") the string export PATH=$PATH:"/usr/bin/gatk-4.0.10.1" to the end of the file ~/.bashrc - well, not quite, actually. Notice, though, that the content of "$PATH" will replace the string "$PATH" when you execute that and if, for instance, your PATH contained before the string:

Code:
/usr/bin:/usr/local/bin

then what you wrote into the file ~/.bashrc will be NOT the line

Code:
$ cat ~/.bashrc

<...old content of .bashrc...>
export PATH=$PATH:"/usr/bin/gatk-4.0.10.1"

but in fact:

Code:
$ cat ~/.bashrc

<...old content of .bashrc...>
export PATH=/usr/bin/usr/local/bin:/usr/bin/gatk-4.0.10.1

and this may or may not (most probably may not) be what you wanted. Anyway, when you want to have this setting not only in your future sessions but also in the current one you indeed have to use source ~/.bashrc because at the time when the file was executed - your login - the change was not there.

Further, appending directories to the path naively has a problem: you don't want the directories to be there several times. Take yours, for example, the existing path is just to show the effect, your will probably be different:

Code:
$ echo $PATH
/usr/bin:/usr/local/bin
$ export PATH=$PATH:"/usr/bin/gatk-4.0.10.1"
$ echo $PATH
/usr/bin:/usr/local/bin:/usr/bin/gatk-4.0.10.1
$ export PATH=$PATH:"/usr/bin/gatk-4.0.10.1"
$ echo $PATH
/usr/bin:/usr/local/bin:/usr/bin/gatk-4.0.10.1:/usr/bin/gatk-4.0.10.1

You probably want to avoid that. This is why i set the PATH in my rc-scripts this way:

Code:
export PATH="/usr/bin"               # here the existing PATH is overwritten
       PATH="$PATH:/usr/local/bin"
       PATH="$PATH:/some/other/dir"
       ...etc.

It is easy to add or remove a line with a single directory this way and it is easy to grasp immediately what is what. For not-so-obvious settings i use comments to remind me what it was for (so i can also easily find out if it can be removed again). Also notice that a variable is either exported or not. If it is there is no need to export it again, just because its value has changed.

You first try:

Quote:
but when I do a sudo nano ~/.bashrc
probably didn't work because by "sudo" you changed the environment of user "root", not the environment of the account you use to run the application. So, it "worked" in a way, but not one you could make use of.

I hope this helps.

bakunin
Login or Register to Ask a Question

Previous Thread | Next Thread

10 More Discussions You Might Find Interesting

1. UNIX for Beginners Questions & Answers

What is the difference ../directory path and ./directory path in ksh?

What is the difference ../directory path and ./directory path in ksh? (1 Reply)
Discussion started by: TestKing
1 Replies

2. UNIX for Beginners Questions & Answers

Convert Relative path to Absolute path, without changing directory to the file location.

Hello, I am creating a file with all the source folders included in my git branch, when i grep for the used source, i found source included as relative path instead of absolute path, how can convert relative path to absolute path without changing directory to that folder and using readlink -f ? ... (4 Replies)
Discussion started by: Sekhar419
4 Replies

3. Solaris

NFS with a NAS: permanently inconsistent directory state across clients

Hi, I am having some NFS directory consistency problems with the below setup on a local (192.) network: 1. Different permissions (chmod) for the same NFS dir are reflected on different clients. 2. (more serious) an NFS dir created on client1 cannot be accessed on client2; this applies to some... (10 Replies)
Discussion started by: cosmojetz
10 Replies

4. Shell Programming and Scripting

Can't add directory to path correctly

Hello everyone I am a newcomer to UNIX and I have hit a snag in something that would probably take experienced people about 30 seconds. Long story short I am trying to add a directory to my PATH and it is getting added but not working. I mean, the object of adding it to the path is so I can access... (2 Replies)
Discussion started by: tastybrownies
2 Replies

5. Shell Programming and Scripting

Setting the path permanently using shell script

I'm trying to set the path permanently through a shell script. (/opt/quest/bin:/usr/bin/lab to /.profile.) I tired using echo option like below but it doesn't work. Please suggest me the right way to do so. echo "PATH=$PATH:/opt/quest/bin:/usr/bin/lab" >> /.profile (6 Replies)
Discussion started by: pjeedu2247
6 Replies

6. UNIX for Dummies Questions & Answers

Add directory to a global PATH

Guys, I did a search on this but couldn't find any thing. I need to add /home/scadm/scripts to the PATH. If I do the below it works for the session I'm in. If I close it and reopen it doesnt work. PATH=$PATH\:/home/scadm/scripts ; export PATH I also want this path added to all the... (3 Replies)
Discussion started by: miltonrods
3 Replies

7. Shell Programming and Scripting

add path variable permanently

Hi, I have added the path variable as below export... (4 Replies)
Discussion started by: burton
4 Replies

8. Shell Programming and Scripting

Retrieve directory path from full file path through sh

Hi, I have a file abcd.txt which has contents in the form of full path file names i.e. $home> vi abcd.txt /a/b/c/r1.txt /q/w/e/r2.txt /z/x/c/r3.txt Now I want to retrieve only the directory path name for each row i.e /a/b/c/ /q/w/e/ How to get the same through shell script?... (7 Replies)
Discussion started by: royzlife
7 Replies

9. IP Networking

Is there any way to add an exception for a port in the firewall setting, permanently?

Hello, I want to add a port in the firewall exception list so that my application can be accessed over network even if firewall is disabled. I am using iptables command to add exception. The problem is, after setting the rule if I change the firewall setting i.e. on/off then it is overwriting... (1 Reply)
Discussion started by: senrooy
1 Replies

10. Red Hat

permanently add static route

I have a machine with an interface that has two different addresses on CentOS 5 eth0: 10.20.21.77 eth0:1 141.218.1.221 If I issue this command I get the result I'm looking for. /sbin/route add -net 141.218.1.0 netmask 255.255.255.0 gw 10.20.21.77 ip route show dev eth0 141.218.1.0/24... (1 Reply)
Discussion started by: beaker457
1 Replies
Login or Register to Ask a Question