This shows you the differences between two versions of the page.
Both sides previous revision Previous revision Next revision | Previous revision Next revision Both sides next revision | ||
action:Execute_a_Shell_Script [2019/10/07 04:37] peternlewis [Execute a Shell Script] |
action:Execute_a_Shell_Script [2019/10/07 16:15] JMichaelTX Reorganize instructions for using shebang |
||
---|---|---|---|
Line 2: | Line 2: | ||
The //Execute a Shell Script// action executes a specified shell script using `/bin/sh`, either from a file or from the script embedded in the action. | The //Execute a Shell Script// action executes a specified shell script using `/bin/sh`, either from a file or from the script embedded in the action. | ||
+ | |||
+ | **Important:** | ||
+ | |||
+ | * It is best to always specify the language using the `#!` at the front of the script. | ||
+ | * The script is executed with the `sh` shell, so if you want to use another language, or use any special kinds of shell-specific syntax, then you should specify the language. | ||
+ | * For more details and examples, see [[https://forum.keyboardmaestro.com/t/impact-of-macos-catalina-defaulting-to-unix-shell-using-zsh/15503/12?u=jmichaeltx|How to Use Shebang at Top of Shell Script]] | ||
To execute the script from an external file, choose the "Execute Script File" in the choices for script location. | To execute the script from an external file, choose the "Execute Script File" in the choices for script location. | ||
Line 11: | Line 17: | ||
If the script fails, the action will fail (v9.0+), potentially aborting the macro. | If the script fails, the action will fail (v9.0+), potentially aborting the macro. | ||
- | The script is executed with the `sh` shell — if you want to use another language, or use any special kinds of shell-specific syntax, then you should specify the language using the `#!` at the front of the script. | + | |
==== Using Keyboard Maestro Variables ==== | ==== Using Keyboard Maestro Variables ==== | ||
Line 186: | Line 192: | ||
that is the script will search for tools in the `/usr/bin` directory, then in the `/bin` directory, then `/usr/sbin` and finally `/sbin`. Only tools installed by the system will be in these directories - any tools you have installed will almost certainly be elsewhere and so not found by default because: | that is the script will search for tools in the `/usr/bin` directory, then in the `/bin` directory, then `/usr/sbin` and finally `/sbin`. Only tools installed by the system will be in these directories - any tools you have installed will almost certainly be elsewhere and so not found by default because: | ||
- | * **shell scripts are executed in non-interactive mode** (see the INVOCATION section of the [bash man page](https://developer.apple.com/library/mac/documentation/Darwin/Reference/ManPages/man1/bash.1.html)), the **only** path preset by default is the system path. | + | * **shell scripts are executed in non-interactive mode** (see the INVOCATION section of the sh man page), the **only** path preset by default is the system path. |
* **Thus, your tools or files may not be automatically accessible.** | * **Thus, your tools or files may not be automatically accessible.** | ||
* The `$PATH` environment variable you may have set in Terminal is **not** used. | * The `$PATH` environment variable you may have set in Terminal is **not** used. | ||
Line 275: | Line 281: | ||
==== Forum ==== | ==== Forum ==== | ||
+ | - [[https://forum.keyboardmaestro.com/t/impact-of-macos-catalina-defaulting-to-unix-shell-using-zsh/15503/12?u=jmichaeltx|How to Use Shebang at Top of Shell Script]] | ||
- [[https://forum.keyboardmaestro.com/t/png-metadata-comment/6375/29|PNG Metadata "Comment"]] | - [[https://forum.keyboardmaestro.com/t/png-metadata-comment/6375/29|PNG Metadata "Comment"]] | ||
- [[https://forum.keyboardmaestro.com/t/having-trouble-with-quotes-and-shell-variables/6236/9|Having trouble with quotes and shell variables]] | - [[https://forum.keyboardmaestro.com/t/having-trouble-with-quotes-and-shell-variables/6236/9|Having trouble with quotes and shell variables]] |