Easy-to-follow video tutorials help you learn software, creative, and business skills.Become a member
In this movie we're going to learn more about environment variables which are also known as shell variables. We're going to do that so that we can begin to use environment variables to configure our working environment. We've touched on shell variables already. For example, we saw that we can have echo $SHELL and that will return the default login shell for the current user. The shell variable in this case is called SHELL and it's in all capitals. The dollar sign is actually not part of the shell variable name. The dollar sign is there to serve as an indication to Unix that we want it to return the value that's stored in the shell variable.
We can also define our own shell variables as well. For example, I can have MYNAME= and then inside quotes put your name. Then I could echo that back the same way. echo $MYNAME, and it returns the value that we've set inside that variable. Notice that I did not use the dollar sign when I set the value of MYNAME. I only use it when I wanted to retrieve the value. Just like the command aliases that we were creating in the last movie, variables that we set during the current bash session will disappear once we log out of that session.
And like aliases if we want those to be defined all the time, well they need to be stored in either our .bash_profile or our .bashrc file. As I said before, I think the .bashrc file is the better choice. So let's put those in there. Notice I am inside my main user directory. Open up that file. You can put it really anywhere in here. I am going to put it right here near the top. So I'll just say MYNAME= and then I'll put in Kevin Skoglund. Now we'll exit. I'll save the file. Now if we first just try echo $MYNAME, we still have it saved from before.
To really test this, what we need to do is actually close this window and open a new one and then we can try it again. echo $MYNAME, and there it is. Now you can see that it's set all the time. Every time we open up a bash session, this variable will be defined for us. So that takes care making it available the bash. But there's one more thing that we need to do. As I've shown it here, MYNAME won't be available to the child processes that bash starts for us. It'll only be available in bash itself. To indicate to bash it should also pass along these variables or export them to other commands, programs, and scripts, well then we need to use the export command.
Let's go up to nano .bashrc again, and then now we can just say export MYNAME. And now bash knows that it also should export it to all of the programs that it runs as well. So every time it launches a program, it'll make this MYNAME variable available as well. Now you can see here I did it in two lines. I set it in one line and then I exported it in the other. You can actually do both in the same line, and I'll show you that in just a moment. Now while it is moderately useful to define your own variables, it's even more useful to use variables to set some configuration options for our Unix environment and the programs that we use.
For example, if you read the man pages for the command less, you'll learn that there's an environment variable that can be used to configure the default settings that less will use when it starts up. So to do that we'll just use export LESS= and then inside quotes we'll put whatever options we want LESS to use. Notice first of all that I also did the exporting and the setting all on one line. Before I did it on two lines. Here I am doing it in one. export LESS= and then we can use options. So we could use the m, the lowercase m. That will give us a medium verbose prompt every time we start up LESS or we could use capital M. That would be the maximum verbose prompt, right, the longest prompt possible.
We can put capital N. That would give us some line numbers. You can go through the man pages for LESS and decide what options you want. I am just going to use the -M option here. So I am going to use Ctrl+X to exit, and I am already exporting it so that means it will be available not just in bash but inside LESS, because LESS is a program that bash starts. If you want you can play with it. You can try taking away the export and you'll see that it doesn't get passed along. Now if we just do right here echo $LESS, we don't have a value. That's because bashrc has not been run since we made that change.
To do that we either need to close the window and reopen it, or we can call source .bashrc. That will actually execute the program. And now if we go up and say echo $LESS again, you see that value is there. Let's test it out. Let's actually call less on inside of our unix_files. We have that lorem_ipsum.txt file. Let's call it on that. And you'll see now I get that maximum verbose prompt at the bottom. So that's the default option being used every time I call less. So this is the way that you do it.
You can interact with different programs that you might run by setting these values, but make sure that you export them so that they're used not just in bash, but actually pushed out to the program that gets launched as well and made available there. In the next couple of movies I want to show you some more useful environment variables that we can set.
Get unlimited access to all courses for just $25/month.Become a member
Access exercise files from a button right under the course name.
Search within course videos and transcripts, and jump right to the results.
Remove icons showing you already watched videos if you want to start over.
Make the video wide, narrow, full-screen, or pop the player out of the page into its own window.
Click on text in the transcript to jump to that spot in the video. As the video plays, the relevant spot in the transcript will be highlighted.
Your file was successfully uploaded.