FAQ: Environment - Aliases II

This community-built FAQ covers the “Aliases II” exercise from the lesson “Environment”.

Paths and Courses
This exercise can be found in the following Codecademy content:

Web Development

Learn the Command Line

FAQs on the exercise Aliases II

There are currently no frequently asked questions associated with this exercise – that’s where you come in! You can contribute to this section by offering your own questions, answers, or clarifications on this exercise. Ask or answer a question by clicking reply (reply) below.

If you’ve had an “aha” moment about the concepts, formatting, syntax, or anything else with this exercise, consider sharing those insights! Teaching others and answering their questions is one of the best ways to learn and stay sharp.

Join the Discussion. Help a fellow learner on their journey.

Ask or answer a question about this exercise by clicking reply (reply) below!
You can also find further discussion and get answers to your questions over in #get-help.

Agree with a comment or answer? Like (like) to up-vote the contribution!

Need broader help or resources? Head to #get-help and #community:tips-and-resources. If you are wanting feedback or inspiration for a project, check out #project.

Looking for motivation to keep learning? Join our wider discussions in #community

Learn more about how to use this guide.

Found a bug? Report it online, or post in #community:Codecademy-Bug-Reporting

Have a question about your account or billing? Reach out to our customer support team!

None of the above? Find out where to ask other questions here!

I cannot figure out the second step or #2 or this exercise, it keeps telling me did I create both aliases. I tried to do everything correctly yet I can’t seem to get it correct.

I am first getting into nano ~/.bash_profile, it lets me in, but once I do that #2 gets angry and gives me a red X.
I then try to create the alias like so: alias hy=“history” hit enter, then alias ll=“ls-la” hit enter again, then Ctrl-O to save, hit enter, then Cntrl-X to exit. then enter again.

I’m not sure why I can’t get #2 step correct, the first #1 part I did get correct so am I already in nano and don’t have to type nano ~/.bash_profile in step #2?

Anything can help, thanks, Emily

1 Like

ll= “ls -la” then Ctrl-O to save, hit enter and then Ctrl-x to exit

make sure you have a space bewteen ls and -la, such that it is “ls -la” NOT “ls-la”

I’m facing the same issue. But Ctrl-x keeps getting stuck to the point it stops working for me and so Ctrl-Z. Eventually, after going back and forth I was able to exit. I reported it as a bug, dunno.

I’m having the same problem as e75schob. I can’t move on because it keeps telling me I didn’t create the two aliases. I have entered source ~/.bash.profile and then typed in hy to get the history, and ll to get the list of files, etc. It is working correctly, but the system will not let me move on bc it thinks I have not set up the two aliases. Help!


Hi everyone.

I was facing the same issue today: it kept asking me if I created both aliases and would give me a red X.

I managed to break through this exercise doing the following:

  1. reset the exercise via GET UNSTUCK button
  2. do exercise 1 again
  3. in exercise 2 for the second alias use the format: alias la=“ls -la”
  4. use ^+S instead of ^+O for saving the file
  5. ^+X to exit nano editor
  6. when back to the terminal ENTER

I hope these steps might save some of you time for real coding.


Thank you I have been stuck for a long time, I followed the steps and it worked, ONLY one thing
in step 3 is is (alias ll=“ls -la”) NOT “la”,
thank you so much it saved a lot of time :smiley:

Hello There.

Thanks for reading this. Im totally stuck on #2 - I see others have been stuck as well. I put in both aliases

alias hy=“history”
alias ll=“ls -la”

I also tried: alias la=“ls -la”

But it still responds: Did you create both aliases?

Not sure how to proceed …

Were you editing ~/.bash_profile? Within the nano editor it should show some details about the editor and the on the right the absolute path (like below)-

GNU nano 2.9.3      /home/ccuser/.bash_profile

alias hy="history"
alias ll="ls -la"

Make sure that saves, then exit the editor and hit enter as the instructions suggest.

Sorry the late reply. Yes, I did those things and still not getting something right.

  1. I did step 1: ~/.bash_profile
    Green light
    step 2: typed in: alias hy=“history” - Hit Return
    Step 3: typed in: alias ll=“ls -la”
    Typed CTRL O
    Hit Enter
    Typed CTRL X

Can you tell me what I am doing wrong… Im getting pretty bummed about this.

Nope, I’m afraid I cannot spot the issue there, unless in your first line you simply typed out-


You should be openeing that file in the nano text editor which would be-

nano ~/.bash_profile

Then you add in your aliases, save and exit so that you write to that file.

If not… what step is still failing, part 2? Once you’ve saved and exited nano did you hit return in the terminal again as per the instructions?

Thank you so much for saving me time! Reseting the exercise really helped me solve the issue. Therefore, I did not have to do steps 3 to 6. Have a wonderful day!

It MUST be typed like this on nano:

1.- echo “Welcome, ur name!”
2.-alias pd=“pwd”
3.-alias hy=“history”
4.-alias ll=“ls -la”

It MUST have the FOUR lines, if not, it will keep showing the error

ok so any help would be appreciated. I typed it exactly how I was supposed to was even able to use the alias’s all three as evidenced in the screen shots, however I still have a red box for the exercise. any suggestions?

Oh! I can not believe I passed the second one
that helped me as well

Hello! The lesson says:

alias hy="history"

hy is set as an alias for the history command in the bash profile. The alias is then made available in the current session through source .

I’ve tested it and indeed, when I start new session and don’t use “source” command, the terminal would throw an error for custom-made alias: “command not found”.

But I also have these aliases in Bash profile and it seems they work fine even without “source”. Why is that?

alias python=“python3”
alias pip=“pip3”

Thank you in advance!

A lot of those sort of commands (pip/python) are not really aliases (you can view a list of actual aliases using the commad alias on its own).

What you want to be looking into is the PATH environment variable (you could view this with echo $PATH). One or more of the entries will likely be an absolute directory path like /bin, usr/bin or /usr/local/bin which is a collection of (bin)aries (or sometimes symlinks to binaries).

Most of these binaries are programs you can run (you will probably find things like sed, ls and cat here). In many cases python is also found here (typically a symlink using this name). You can run these programs using full/relative filepaths, e.g. /usr/bin/ls -l to get the output of ls in list form.

But, because this directory is on your PATH this is simplified and you can run these files by filename alone (rather than full path). Aside from certain shell built-ins like cd this is what happens with most of the commands you have been using; running ls is basically equivalent to using /usr/bin/ls. Much more convenient than using the full path, eh?

So python and pip likely already exist somewhere in a directory contained within PATH. This means they can be accessed without you having to set an alias. A locally defined alias would normally take precedence over a file found via PATH if you found the need to do so.

Bear in mind that PATH can be dynamically modified and you will probably will use this at some point for reasons like adding new easily accessible commands or helping with versioning issues or several other such tasks.

Regarding the bit about sourcing:
If you’re in an existing terminal session and modify your bash initialisation scripts to include a new alias then you’d need to source the script to get the alias to work in your current environment. Restarting the shell will re-run some of the initialisation scripts such the an alias defined there should then be found. It’s a matter of when that script is run, you’d only ever need to source it if you felt the need to update the current environment without restarting it.