質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.40%
bash

bash(Bourne-again-Shell)は sh(Bourne Shell)のインプリメンテーションに様々な機能が追加されたシェルです。LinuxやMac OS XではBashはデフォルトで導入されています。

Ubuntu

Ubuntuは、Debian GNU/Linuxを基盤としたフリーのオペレーティングシステムです。

ROS2

ROS2は、Robot Operation Systemの略称。ロボット開発のためのミドルウェアであるROS1の次世代バージョンです。複数台のロボットを同時に制御でき、組込み系のプラットフォームにも対応しています。

Q&A

1回答

380閲覧

ROS2で .bashrc に記述する順番はありますか?(sourceやexportなど)

yukimeat1999

総合スコア20

bash

bash(Bourne-again-Shell)は sh(Bourne Shell)のインプリメンテーションに様々な機能が追加されたシェルです。LinuxやMac OS XではBashはデフォルトで導入されています。

Ubuntu

Ubuntuは、Debian GNU/Linuxを基盤としたフリーのオペレーティングシステムです。

ROS2

ROS2は、Robot Operation Systemの略称。ロボット開発のためのミドルウェアであるROS1の次世代バージョンです。複数台のロボットを同時に制御でき、組込み系のプラットフォームにも対応しています。

0グッド

0クリップ

投稿2023/10/03 02:27

実現したいこと

ROS2.bashrc記述する順番はありますか?(sourceexportなど)

ROS2を勉強しているのですが、人からもらった資料の通りインストールやら設定やらをして環境構築しました。

その後、他のネットやらを参考に色々していたのですが、ある日.bashrcを見てみると同じ文言が何度も出てきていて汚いなと思いました。

全部貼り付けたのが次の.bashrcです。

bashrc

1# ~/.bashrc: executed by bash(1) for non-login shells. 2# see /usr/share/doc/bash/examples/startup-files (in the package bash-doc) 3# for examples 4 5# If not running interactively, don't do anything 6case $- in 7 *i*) ;; 8 *) return;; 9esac 10 11# don't put duplicate lines or lines starting with space in the history. 12# See bash(1) for more options 13HISTCONTROL=ignoreboth 14 15# append to the history file, don't overwrite it 16shopt -s histappend 17 18# for setting history length see HISTSIZE and HISTFILESIZE in bash(1) 19HISTSIZE=1000 20HISTFILESIZE=2000 21 22# check the window size after each command and, if necessary, 23# update the values of LINES and COLUMNS. 24shopt -s checkwinsize 25 26# If set, the pattern "**" used in a pathname expansion context will 27# match all files and zero or more directories and subdirectories. 28#shopt -s globstar 29 30# make less more friendly for non-text input files, see lesspipe(1) 31[ -x /usr/bin/lesspipe ] && eval "$(SHELL=/bin/sh lesspipe)" 32 33# set variable identifying the chroot you work in (used in the prompt below) 34if [ -z "${debian_chroot:-}" ] && [ -r /etc/debian_chroot ]; then 35 debian_chroot=$(cat /etc/debian_chroot) 36fi 37 38# set a fancy prompt (non-color, unless we know we "want" color) 39case "$TERM" in 40 xterm-color|*-256color) color_prompt=yes;; 41esac 42 43# uncomment for a colored prompt, if the terminal has the capability; turned 44# off by default to not distract the user: the focus in a terminal window 45# should be on the output of commands, not on the prompt 46#force_color_prompt=yes 47 48if [ -n "$force_color_prompt" ]; then 49 if [ -x /usr/bin/tput ] && tput setaf 1 >&/dev/null; then 50 # We have color support; assume it's compliant with Ecma-48 51 # (ISO/IEC-6429). (Lack of such support is extremely rare, and such 52 # a case would tend to support setf rather than setaf.) 53 color_prompt=yes 54 else 55 color_prompt= 56 fi 57fi 58 59if [ "$color_prompt" = yes ]; then 60 PS1='${debian_chroot:+($debian_chroot)}\[\033[01;32m\]\u@\h\[\033[00m\]:\[\033[01;34m\]\w\[\033[00m\]\$ ' 61else 62 PS1='${debian_chroot:+($debian_chroot)}\u@\h:\w\$ ' 63fi 64unset color_prompt force_color_prompt 65 66# If this is an xterm set the title to user@host:dir 67case "$TERM" in 68xterm*|rxvt*) 69 PS1="\[\e]0;${debian_chroot:+($debian_chroot)}\u@\h: \w\a\]$PS1" 70 ;; 71*) 72 ;; 73esac 74 75# enable color support of ls and also add handy aliases 76if [ -x /usr/bin/dircolors ]; then 77 test -r ~/.dircolors && eval "$(dircolors -b ~/.dircolors)" || eval "$(dircolors -b)" 78 alias ls='ls --color=auto' 79 #alias dir='dir --color=auto' 80 #alias vdir='vdir --color=auto' 81 82 alias grep='grep --color=auto' 83 alias fgrep='fgrep --color=auto' 84 alias egrep='egrep --color=auto' 85fi 86 87# colored GCC warnings and errors 88#export GCC_COLORS='error=01;31:warning=01;35:note=01;36:caret=01;32:locus=01:quote=01' 89 90# some more ls aliases 91alias ll='ls -alF' 92alias la='ls -A' 93alias l='ls -CF' 94 95# Add an "alert" alias for long running commands. Use like so: 96# sleep 10; alert 97alias alert='notify-send --urgency=low -i "$([ $? = 0 ] && echo terminal || echo error)" "$(history|tail -n1|sed -e '\''s/^\s*[0-9]\+\s*//;s/[;&|]\s*alert$//'\'')"' 98 99# Alias definitions. 100# You may want to put all your additions into a separate file like 101# ~/.bash_aliases, instead of adding them here directly. 102# See /usr/share/doc/bash-doc/examples in the bash-doc package. 103 104if [ -f ~/.bash_aliases ]; then 105 . ~/.bash_aliases 106fi 107 108# enable programmable completion features (you don't need to enable 109# this, if it's already enabled in /etc/bash.bashrc and /etc/profile 110# sources /etc/bash.bashrc). 111if ! shopt -oq posix; then 112 if [ -f /usr/share/bash-completion/bash_completion ]; then 113 . /usr/share/bash-completion/bash_completion 114 elif [ -f /etc/bash_completion ]; then 115 . /etc/bash_completion 116 fi 117fi 118source /opt/ros/humble/setup.bash 119source /usr/share/colcon_argcomplete/hook/colcon-argcomplete.bash 120source /usr/share/colcon_cd/function/colcon_cd.sh 121export _colcon_cd_root=/opt/ros/humble/ 122export RCUTILS_COLORIZED_OUTPUT=1 123export ROS_DOMAIN_ID=1 124# source /usr/share/gazebo/setup.sh 125export RMW_IMPLEMENTATION=rmw_cyclonedds_cpp 126export CYCLONEDDS_URI=~/cyclonedds_config/cyclonedds_config.xml 127export TURTLEBOT3_MODEL=waffle 128export GAZEBO_MODEL_PATH=:/opt/ros/humble/share/turtlebot3_gazebo/models 129source /opt/ros/humble/setup.bash 130source /opt/ros/humble/setup.bash

問題は一番最後の部分で次の箇所です。

bashrc

1source /opt/ros/humble/setup.bash 2source /usr/share/colcon_argcomplete/hook/colcon-argcomplete.bash 3source /usr/share/colcon_cd/function/colcon_cd.sh 4export _colcon_cd_root=/opt/ros/humble/ 5export RCUTILS_COLORIZED_OUTPUT=1 6export ROS_DOMAIN_ID=1 7# source /usr/share/gazebo/setup.sh 8export RMW_IMPLEMENTATION=rmw_cyclonedds_cpp 9export CYCLONEDDS_URI=~/cyclonedds_config/cyclonedds_config.xml 10export TURTLEBOT3_MODEL=waffle 11export GAZEBO_MODEL_PATH=:/opt/ros/humble/share/turtlebot3_gazebo/models 12source /opt/ros/humble/setup.bash 13source /opt/ros/humble/setup.bash

単純に最後のsourceの2行を消せばいいじゃんと思い消すと、端末でうまく動作しないです。
なので、このsourceは一番最後にあるべきなのだろうか?と思ったりします。

ここをうまく綺麗にしたいので、どうしたらいいか教えてください。

補足情報(FW/ツールのバージョンなど)

・Raspberry Pi 4 Model B 8GB
・Ubuntu 22.04.2 LTS
・ROS2 Humble

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

1T2R3M4

2023/10/03 09:09

ROSでない場合は理解できている前提ですか。
hoshi-takanori

2023/10/03 22:10

例えば export ROS_DOMAIN_ID=1 した後に source する必要があるとか?
guest

回答1

0

なので、このsourceは一番最後にあるべきなのだろうか?と思ったりします。

そうですね、sourceは「指定したファイルに書かれたことを実行する」コマンドですので、順番に意味はあります。

たとえば、環境変数を定義する場合に、同じ環境変数を別な箇所でも定義していれば、そちらとの前後でどちらの定義が上書きされるかが変わってきます。

投稿2023/10/03 04:56

maisumakun

総合スコア145680

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

maisumakun

2023/10/03 04:57

> どうしたらいいか教えてください。 呼び出すファイルの中身次第です。(現実にやることはないとは思いますが)複数回sourceしたことで結果が変わるようなシェルスクリプトも作成可能です。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだベストアンサーが選ばれていません

会員登録して回答してみよう

アカウントをお持ちの方は

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.40%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問