Environment files¶
Catkin creates and installs files for env-setting convenience. In the
buildspace there are setup.zsh
and setup.bash
, these contain
variable zsh and bash specific tweaks. They both import setup.sh
,
which contains bourne-shell variable settings.
env.sh
, pointed to by the cmake variable :cmake:data:`CATKIN_ENV`
is special; it executes its arguments in the environment created by
setup.sh
and returns. Any custom commands executed by cmake
should do so via this script. If executed without arguments, it will
spawn a subshell (using the current login shell, or $SHELL
) in the
development environment.
Warning
That env.sh
executes a subshell means that your shell
initialization files will be read after the environment
is set by catkin’s env hooks; this means that what these
files want to do may get clobbered. If you want this
entering- and exiting of subshells mechanism to work
correctly, be careful what you do in your .bashrc
or
.zshrc
. Understand what your shell does when it is
invoked both interactively and non-interactively. The
simpler mechanism is simply to ‘source’ the appropriate
setup
file, provided you are satisfied with the
irreversible changes that these files make to your
current environment. All depends on your workflow.
Environment hooks
Projects can, via the :cmake:macro:`catkin_add_env_hooks` macro, add
sh code to be executed by setup.sh
(and by extension
setup.bash
and friends). If you need to add things to the
environment, this is probably the place to do it. Don’t get fancy:
the contents of these scripts must be interpretable by all members of
the bourne shell family. Be safe and ensure that /bin/dash
is
okay with them.
NOTE: These environment hooks are only for variable settings. Shell aliases and functions