--- title: Shell Command description: Instructions on how to integrate Shell commands into Home Assistant. ha_category: - Automation ha_iot_class: Local Push ha_release: 0.7.6 ha_quality_scale: internal ha_codeowners: - '@home-assistant/core' ha_domain: shell_command ha_integration_type: integration --- This integration can expose regular shell commands as services. Services can be called from a [script] or in [automation]. Shell commands aren't allowed for a camel-case naming, please use lowercase naming only and separate the names with underscores. Note that the shell command process will be terminated after 60 seconds, full stop. There is no option to alter this behavior, this is by design because Home Assistant is not intended to manage long-running external processes. [script]: /integrations/script/ [automation]: /getting-started/automation/ ## Configuration ```yaml # Example configuration.yaml entry # Exposes service shell_command.restart_pow shell_command: restart_pow: touch ~/.pow/restart.txt ``` {% configuration %} alias: description: Give the shell command a name (alias) as a variable and set the command you want to execute after the colon. e.g., `alias`:`the shell command you want to execute`. required: true type: string {% endconfiguration %} The commands can be dynamic, using templates to insert values for arguments. When using templates, shell_command runs in a more secure environment which doesn't allow any shell helpers like automatically expanding the home dir `~` or using pipe symbols to run multiple commands. Similarly, only content after the first space can be generated by a template. This means the command name itself cannot be generated by a template, but it must be literally provided. Any service data passed into the service call to activate the shell command will be available as a variable within the template. `stdout` and `stderr` output from the command are both captured and will be logged by setting the [log level](/integrations/logger/) to debug. ## Execution The `command` is executed within the [configuration directory](/docs/configuration/).