280

I am trying to edit an entry to PATH, as I did something wrong.

I am using Mac OS X v10.10.3 (Yosemite)

I have tried:

touch ~/.bash_profile; open ~/.bash_profile

But the file editor opens with nothing inside.

My problem:

I am trying to install ANDROID_HOME to my PATH

I misspelled it, but when I closed the terminal and went back it was gone, so I tried again:

export ANDROID_HOME=/<installation location>/android-sdk-macosx
export PATH=${PATH}:$ANDROID_HOME/tools:$ANDROID_HOME/platform-tools

This time, I typed the command correctly but, when I closed the terminal, my settings disappeared again.

How do I execute my desired settings?

If I was to edit bash.profile, how would I enter the above code?

Peter Mortensen
  • 30,738
  • 21
  • 105
  • 131
Thiago
  • 12,778
  • 14
  • 93
  • 110
  • 3
    Use `vi ~/.bash_profile` or `subl ~/.bash_profile` or `mate ~/.bash_profile`, depending on your favourite editor. – Droppy May 26 '15 at 14:20
  • just tried nano ~/.bash_profile, it loads, but there is nothing inside – Thiago May 26 '15 at 14:22
  • 1
    Sounds like `.bash_profile` is empty/missing then. – Droppy May 26 '15 at 14:23
  • 10
    For newbies like, these notes will help: 1. `~/.bash_profile` means it's located in the **root** directory. `~` means root directory. 2. files prefixed with `.` are invisible to `ls` command. They are _kind of_ like hidden files, files the normal user doesn't really need to see. Our case here is an exception. To be able to see it you can do `ls -a` 3. `touch` will create a file at the specified directory _if_ it doesn't exist. It it does exist then nothing will happen – mfaani Feb 08 '19 at 15:20
  • 2
    4. and obviously `open` will open it with your default texteditor. 5. As a result doing `touch ~/.bash_profile` from **any directory** will work. because your path is not relative – mfaani Feb 08 '19 at 15:20
  • 3
    @Honey: `~` means home (*i.e.*, `$HOME`), not root (*i.e.*, `/`). – Davis Herring Apr 23 '21 at 21:29

11 Answers11

504

You have to open that file with a text editor and then save it.

touch ~/.bash_profile; open ~/.bash_profile

It will open the file with TextEdit, paste your things and then save it. If you open it again you'll find your edits.

You can use other editors:

nano ~/.bash_profile
mate ~/.bash_profile
vim ~/.bash_profile

But if you don't know how to use them, it's easier to use the open approach.


Alternatively, you can rely on pbpaste. Copy

export ANDROID_HOME=/<installation location>/android-sdk-macosx
export PATH=${PATH}:$ANDROID_HOME/tools:$ANDROID_HOME/platform-tools

in the system clipboard and then in a shell run

pbpaste > ~/.bash_profile

Or alternatively you can also use cat

cat > ~/.bash_profile

(now cat waits for input: paste the two export definitions and then hit Ctrl + D).

Peter Mortensen
  • 30,738
  • 21
  • 105
  • 131
Alessandro Vendruscolo
  • 14,493
  • 4
  • 32
  • 41
  • There are issues using things like `cat` to write to files when the text contains references to environment variables as it means those references need to be escaped. It's must more usual to use a text editor. – Droppy May 27 '15 at 06:48
  • What would it mean if I enter "touch ./bash_profile" (it says nothing) then "open .bash_profile" and it tells me that file does not exist? – Dronz Oct 23 '18 at 21:03
  • if you are using Catalina, follow the steps outlined below : https://mkyong.com/maven/install-maven-on-mac-osx/#install-maven-manually – sss Jan 24 '21 at 05:04
  • Replace `bash_profile` with `zshrc` from this answer – Dror Bar Sep 27 '21 at 19:00
  • getting an empty file using all methods . ?? – user2568374 Jul 08 '22 at 15:07
  • @user2568374 if you have never edited this file before, it will be empty. Just add what you need – Dror Bar Aug 08 '23 at 07:29
  • `nano ~/.bash_profile` helped me. Thanks – Kamlesh Aug 15 '23 at 06:40
130

A bit more detailed for beginners:


Before you begin with .bash_profile on Mac, please be aware that since macOS Catalina zsh (z shell) is the default shell. Therefore stuff we used to put in the .bash_profile now belongs to the .zshenv or the .zshrc file.

.zshenv .zshrc ? (Found here)

.zshenv: invocations of the shell. Often contains exported variables that should be available to other programs. For example, $PATH.

.zshrc: Sourced in interactive shells only. It should contain commands to set up aliases, functions, options, key bindings, etc.


STEP 1

Make sure the .bash_profile file is existing? (or the .zshenv of course) Remember that the .bash_profile file isn't there by default. You have to create it on your own.

Go into your user folder in finder. The .bash_profile file should be findable there. -> HD/Users/[USERNAME]

Remember: Files with a point at the beginning '.' are hidden by default.

To show hidden files in Mac OS Finder:

Press: Command + Shift + .

If it's not existing, you have to create .bash_profile on your own.

Open terminal app and switch into user folder with simple command:

cd

If it's not existing, use this command to create the file:

touch .bash_profile

STEP 2

If you can't memorise the nerdy commands for save and close in vim, nano etc (the way recommended above) the easiest way to edit is to open .bash_profile (or the .zshenv) file in your favored code editor (Sublime, Visual Studio Code, etc.).

Finder -> User folder. Right click -> open with : Visual Studio Code (or other code editor). Or drag it on app in dock.

… and there you can edit it, pass export commands in new lines.

Herr_Hansen
  • 2,292
  • 1
  • 20
  • 17
84

If you are using macOS v10.15 (Catalina), you need to update the .zshrc file instead of file .bash_profile or .profile.

Peter Mortensen
  • 30,738
  • 21
  • 105
  • 131
Marcus Gallegos
  • 1,532
  • 1
  • 16
  • 31
24

For Mac OS, step by step:

  1. First of all, open a terminal and write it: cd ~/

  2. Create your Bash file: touch .bash_profile

    You created your ".bash_profile" file, but if you would like to edit it, continue reading with step 3.

  3. Edit your Bash profile: open -e .bash_profile

    After that you can save from the top-left corner of screen: FileSave

  4. Done!

canerkaseler
  • 6,204
  • 45
  • 38
10

Set the path JAVA_HOME and ANDROID_HOME. You have to open terminal and enter the below cmd.

touch ~/.bash_profile; open ~/.bash_profile

After that, paste the below paths in the base profile file and save it:

export ANDROID_HOME=/Users/<username>/Library/Android/sdk 
export PATH="$JAVA_HOME/bin:$ANDROID_HOME/platform-tools:$ANDROID_HOME/emulator:$PATH"
export JAVA_HOME=/Library/Java/JavaVirtualMachines/jdk1.8.0_221.jdk/Contents/Home
Peter Mortensen
  • 30,738
  • 21
  • 105
  • 131
Bheem Singh
  • 607
  • 7
  • 13
9

For beginners: To create your .bash_profile file in your home directory on macOS, run:

nano ~/.bash_profile

Then you can paste in the following:

https://gist.github.com/mocon/0baf15e62163a07cb957888559d1b054

As you can see, it includes some example aliases and an environment variable at the bottom.

One you're done making your changes, follow the instructions at the bottom of the Nano editor window to WriteOut (Ctrl + O) and Exit (Ctrl + X). Then quit your Terminal and reopen it, and you will be able to use your newly defined aliases and environment variables.

Kamlesh
  • 5,233
  • 39
  • 50
Myles O'Connor
  • 190
  • 1
  • 3
8

Just type open ~/.bash_profile on terminal, you can edit it.

5

Determine which shell you're using by typing echo $SHELL in Terminal.

Then open/create correct rc file. For Bash it's $HOME/.bash_profile or $HOME/.bashrc. For Z shell it's $HOME/.zshrc.

Add this line to the file end:

export PATH="$PATH:/your/new/path"

To verify, refresh variables by restarting Terminal or typing source $HOME/.<rc file> and then do echo $PATH

Pavel
  • 5,374
  • 4
  • 30
  • 55
2

Mac OS X doesn't store the path in file .bash_profile, but file .profile, since Mac OS X is a branch of the *BSD family. You should be able to see the export blah blah blah in file .profile once you do cat .profile on your terminal.

Peter Mortensen
  • 30,738
  • 21
  • 105
  • 131
  • 3
    As of Yosemite (10.10) this is no longer true, if it ever was. Bash has been the default shell on macOS for a long time already. Historically, *BSD had `csh` which is incompatible, and uses `.cshrc` and not `.profile` (though if you need to use several Bourne-compatible shells, it makes sense to have common settings in `.profile`). – tripleee Oct 05 '16 at 03:51
2

For me, my macOS is macOS v10.14 (Mojave). And I was facing the same issue for three days and in the end, I just wrote the correct path in the .bash_profile file which was like this:

export PATH=/Users/[YOURNAME]/development/flutter/bin:$PATH
  • Note 1: if you don't have filr .bash_profile, create one and write the line above
  • Note 2: zip your downloaded Flutter SDK in [home]/development if you copy and paste this path
Peter Mortensen
  • 30,738
  • 21
  • 105
  • 131
ALI HUSSEIN
  • 85
  • 2
  • 9
  • This. Also make sure to close the terminal and open a new one to see flutter commands work – Paolo Jun 13 '20 at 06:22
2

The simplest answer is:

Step 1: Fire up Terminal.app

Step 2: Type nano .bash_profile – This command will open the .bash_profile document (or create it if it doesn’t already exist) in the easiest-to-use text editor in Terminal – Nano.

Step 3: Now you can make a simple change to the file. Paste these lines of code to change your Terminal prompt.

export PS1="___________________    | \w @ \h (\u) \n| => "

export PS2="| => "

Step 4: Now save your changes by typing Ctrl + O. Hit Return to save. Then exit Nano by typing Ctrl + X

Step 5: Now we need to *activate your changes. Type source .bash_profile and watch your prompt change.

That's it! Enjoy!

Peter Mortensen
  • 30,738
  • 21
  • 105
  • 131
Soban Arshad
  • 1,295
  • 19
  • 15