ROS2の setup.bash を必要なときだけ source する
ROS2を入れたけど, setup.bash を source すると地味に時間がかかる.
これを .bashrc で source させるようにすると, ROS2 を使わないときでもターミナルを開くたびに時間がかかって地味にストレス.
かと言って, ROS2 を使うときだけ手打ちで source するのも面倒.
ということで, ターミナル開いて初めてROS2系コマンド (colcon含む) を打つときだけ source させるようなスクリプト書きました.
以下を .bashrc に追記すればOK
colconSetted() { if [ -z "$ROS2SETTED" ]; then source /opt/ros/dashing/setup.bash source ~/ros2_ws/install/setup.bash ROS2SETTED=1 fi \colcon "$@" } ros2Setted() { if [ -z "$ROS2SETTED" ]; then source /opt/ros/dashing/setup.bash source ~/ros2_ws/install/setup.bash ROS2SETTED=1 fi \ros2 "$@" } alias colcon="colconSetted" alias ros2="ros2Setted"
一発なにかROS2系のコマンドを打たないと補完が効かないのが玉にキズ.
それだったらエイリアス組んで自分で打ったほうがいいのではと思ってしまったりするけど気にしない.
あとまっさらな状態からパッケージを作ったとき, ~ros2_ws/install/setup.bash が無いとエラー出る.
おまけで, colconでパッケージを指定してビルドする
colcon build --symlink-install --packages-select
も長くて面倒なので cbp に置き換えるスクリプトを書きました.
cbp() { cd ~/ros2_ws && colcon build --symlink-install --packages-select "$@" cd - }
参考URL
- cd したら ls する - Qiita
- シェル変数と環境変数の違いをコマンドラインで確認する - Qiita
- 位置パラメーターの一括展開 $* $@ "$*" "$@" の違いを知れ!! - Shell Script Advent Calendar 2016 - ダメ出し Blog
- シェルスクリプトでの変数定義 - Qiita
- シェルで変数の空文字判定 | ハックノート
- シェルスクリプト(bash)のif文とtestコマンド([])自分メモ - Qiita