Launch Mac App From Terminal

The Terminal is generally reserved as an environment for advanced configuration of your Mac, but there are those who resort to it on a regular basis and use it in conjunction with OS X’s graphical interface to make optimal use of the system. If you do so, then you might find yourself periodically wanting to launch an application, either directly from the command line, or from an automated action like a script. In addition, you can use this feature to launch multiple instances of a standard OS X program, or run it as a different user, such as root, which can give you access to the system in ways you might otherwise not have.

The classic way

Make Terminal windows stand out with profiles. When you’re logged in to several servers, unique background colors and window titles specified in profiles help you easily spot the right Terminal window. Use profiles built into Terminal, or create your own custom profiles. How to create profiles for Terminal. Feb 26, 2003  The command is simply open (which can also be used for opening directories). The most basic example of launching an application: open /path/to/some.app More complex possibilities also exist: open '/Volumes/Macintosh HD/foo.txt'. The terminal app is in the Utilities folder—which is found the Applications folder. Launch it now. The BSD UNIX command we'll be using is open. Below is the manual page ('man' for short), shown.

Terminal App For Mac

As with general Terminal syntax, you can launch an executable script or binary file from the Terminal by simply entering its full path. However, to do so for an OS X app with a graphical interface, you will need to specify the app’s executable file within the application package. In most cases, this will be a subdirectory called /Contents/MacOS/ that contains an executable with the same name as the app. For instance, opening TextEdit in the Applications folder will require you run the following command:

This can be useful for troubleshooting problems with the program, since you will see console output (errors, warnings, and sometimes other activity) output directly to the Terminal window hosting the program, as opposed to having to use the Console utility.

If you would like to run the app as a different user (e.g., the root account), then you can first switch user accounts in the Terminal with the “su” command, or use “sudo” before specifying the path to the Mac OS application, and this will launch the program as root (note that this might not always work):

Keep in mind that launching a program in this way will launch a new instance of it, so if you have TextEdit already open, then you will see another TextEdit program open next to it. This has its benefits in some circumstances, but can interfere with services like Apple’s Resume feature (ie, it may overwrite your current window configuration so when TextEdit is quit, current window positions will not be saved and then restored when the program is next opened).

In addition, keep in mind that when opened in this manner, the Terminal window will be hosting the program, so it must remain open while the program is running—if you close the Terminal window, you will force-quit the program you have opened.

Using the “open” command

One of OS X’s unique Terminal commands is the “open” command that allows you to handle files, programs, and URLs in sometimes unique ways. The benefit of this program is, similar to using the Terminal for directly launching an app in the “classic” way; however, it does have two benefits. First, it is easier to use, and second, it does not require the Terminal remain open:

In this command, replace “appname” with the name of your desired app, and it should launch. Note that by default this command will, similar to the OS X graphical environment, only open one instance of an app, so if the program is already open then this command will switch to it. However, you can use this command to open another instance of the program, by adding the “-n” flag:

Keep in mind that as with the classic approach, multiple instances of an application running at the same time under the same user account may have odd consequences with supporting services that the application uses; however, for simple programs and utilities it can be useful to run another instance as root, in order to overcome permissions limitations with your current user account. Also consider apps like the Calculator, where it might be useful to have more than one calculation going at a time.

With the command run multiple times, you will open multiple instances of the program.

When you run any command in the OS X Terminal, you are running some program that has been coded and compiled to perform a specific function, be it something simple like “ls” to list directory contents, or something more interactive like “top” to display information on running processes. These commands are all programs on your Mac, just like applications such as Pages, Word, TextEdit, and Safari that have graphical interfaces and are the main productivity programs you use when running OS X.

Opening Applications using the Terminal

Most applications in OS X are opened by using a graphical approach like mouse click actions or services like Spotlight; however, you can also open applications using the OS X Terminal. This might seem unnecessary, but it can have its uses. For instance, I have a Mac Mini running the third-party media center software “XBMC” on it. This software sometimes crashes and needs to be relaunched, so while I can screen share to it or rummage for my wireless mouse and keyboard to access it, another approach if I am at my laptop is to simply log in with SSH and use one of several command options for opening the program.

1. Direct executable execution

Applications in OS X are packaged as bundles, which are folders including the executable along with any supporting resources (libraries, images, fonts, etc.) that the program needs to run. You can see these by right-clicking any application and choosing the option to “Show Package Contents.” In this bundle structure, the application executable is located in the /Contents/MacOS/ directory, and can be launched directly in the Terminal by specifying the full path to this executable. For example, you can open Safari by running the following command:

While this will open the specified program, this method has some limitations and restrictions that might cause problems. For one, the program will be launched as a child process of the current Terminal window, so if you close the Terminal window you will close the program. In addition, such behaviors might interfere with Apple’s Resume service and not save any of your open windows for the next time you re-launch your program.

2. The “open” command

My preferred method of opening an application from the Terminal is to use the “open” command with the the “-a” flag to specify the application by name. For example, the following command will open Safari:

Mac

This approach mimics opening the program using the graphical interface, and can be useful if you are creating scripts where you would like to open a specific application. You can also use many of the “open” command’s options to do things like launch a new instance of a program (though this may conflict with OS X’s Resume service), or open a program in the background. In addition, since the “open” command launches applications indirectly, once run you can simply close the Terminal window and the application will remain open, as opposed to using direct executable execution.

The “open” command is also useful because you can cleanly launch applications for the current user account on a remote system. For instance, in looking at the XBMC setup on my Mac Mini, when XBMC crashes I can use “ssh” to remotely log in as the current username and then simply run “open -a XBMC” to quickly re-launch it.

3. Osascript approaches

The “osascript” command is OS X’s Terminal command for running “open scripting architecture” scripts like AppleScript. Since with AppleScript you can instruct the system to do things like launch applications, with a relatively basic scripting line like ‘open app “APPNAME”‘ coupled with the “osascript” command, you can create a quick one-line command to open any application on the system. For example, the following command will launch Safari similar to the “open” command above:

Keep in mind that as with the “open” command, this will also require you to be logged into the system as the currently active user. Otherwise you will get an error (-10810) at the Terminal and the specified application will not open.

Quitting Applications using the Terminal

While the “open” command is great for launching applications, this approach will only open them and does not provide a way to quit them. Therefore, the AppleScript approach with the “osascript” command may be the easiest way to cleanly quit a running application using the Terminal. For example, given the command above to open Safari, you can use the following one to easily quit it:

Note that while this will attempt to quit programs, if you have unsaved changes in them and a Save dialogue box or other notice pops up that requires user input to proceed, then the program will not quit.

Force-quitting Applications using the Terminal

If you need to force-quit an application using the Terminal, then this can be done in two ways. The first is to simply use the “killall” command, which allows you to specify a program by name and then the system will internally identify it and close it down. The following command is a way to force-quit Safari (since we’ve been using this as an example so far):

In addition to this, for those who like to delve a little deeper into the Terminal, you can first find the process ID (PID) of the running application and then use the standard “kill” command to force-quit it. There are several ways to get the PID of a running application, but an easy one in the Terminal is to use the “pgrep” command and specify the program name. For example, to do so with Safari you would run the following command:

Using Terminal Mac

If Safari is running, then this command will output a single number that is the program’s PID. You can then use “kill PID” (replacing PID with the number) to quit Safari. This approach is a two-step process, but you can lump it all into one command by nesting them together using grave accent symbols to encase the “pgrep” command, such as the following:

Terminal For Mac

What these accent symbols do is first execute the “pgrep Safari” command, and then use the result when running the “kill” command. Therefore, this essentially finds the PID for Safari, and then kills the specified PID.

Comments are closed.