Bash to Xonsh Translation Guide

As you have probably figured out by now, xonsh is not sh-lang compliant. If your muscles have memorized all of the Bash prestidigitations, this page will help you put a finger on how to do the equivalent task in xonsh.

For shell scripts, the recommended file extension is xsh, and shebang line is #!/usr/bin/env xonsh.

Bash Xonsh Notes
$NAME or ${NAME} $NAME Look up an environment variable by name.
export NAME=Peter $NAME = 'Peter' Setting an environment variable.
unset NAME del $NAME Unsetting/deleting an environment variable.
echo "$HOME/hello" echo "$HOME/hello" Construct an argument using an environment variable.
something/$SOME_VAR/$(some_command) @('something/' + $SOME_VAR + $(some_command).strip()) Concatenate a variable or text with the result of running a command.
${!VAR} ${var or expr} Look up an environment variable via another variable name. In xonsh, this may be any valid expression.
$(cmd args) or `cmd args` @$(cmd args) Command substitution (allow the output of a command to replace the command itself). Tokenizes and executes the output of a subprocess command as another subprocess.
set -e $RAISE_SUBPROC_ERROR = True Cause a failure after a non-zero return code. Xonsh will raise a supbrocess.CalledProcessError.
set -x trace on Turns on tracing of source code lines during execution.
&& and or && Logical-and operator for subprocesses.
|| or as well as || Logical-or operator for subprocesses.
$? _.rtn Returns the exit code, or status, of the previous command.
N=V command with ${...}.swap(N=V): command Set temporary environment variable(s) and execute for command. Use an indented block to execute many commands in the same context.
!$ __xonsh__.history[-1, -1] Get the last argument of the last command
$<n> $ARG<n> Command line argument at index n, so $ARG1 is the equivalent of $1.
$@ $ARGS List of all command line argument and parameter strings.