采购 setup.*sh 文件 catkin

采购 setup.*sh 文件 catkin

我一直在关注 ROS wiki 上的 catkin 教程。我偶然发现了这一点:要将工作区添加到 ROS 环境中,您需要获取生成的安装文件:

$ . ~/catkin_ws/devel/setup.bash

我的问题是:这个用于采购的特定语法是什么?我们不应该使用 source 命令吗?据我所知, . 指的是当前目录。提前致谢。

答案1

$ source
bash: source: filename argument required
source: usage: source filename [arguments]

$ help source
source: source filename [arguments]
    Execute commands from a file in the current shell.

    Read and execute commands from FILENAME in the current shell.  The
    entries in $PATH are used to find the directory containing FILENAME.
    If any ARGUMENTS are supplied, they become the positional parameters
    when FILENAME is executed.

    Exit Status:
    Returns the status of the last command executed in FILENAME; fails if
    FILENAME cannot be read.

$ source ~/.bashother    # Valid
$ . ~/.bashother         # Valid

通常,我们会在获取文件之前检查文件是否存在,但是:

$ [[ -f ~/.bashother ]] && source ~/.bashother

我建议你使用source命令而不是.。这样做的主要原因是代码的可读性和可维护性。

通过使用source,您可以更轻松、更准确地在代码库或文件系统中找到资源来源,而无需搜索.。如果您遇到问题或需要进行更改,这将非常有用,尤其是当您不是唯一的贡献者时。

如果您想要一种创建资源文件并轻松获取它们的方法,您可以在文件中设置如下内容.bashrc


BASHRCDIR="${HOME}/.bashrc.d"
if [ -d "$BASHRCDIR" ]; then
    find $BASHRCDIR/* -executable| while read f;
    do
        source "${f}"
    done
fi

然后,将加载+x中的任何文件。您可以在文件名前加上数字以确保顺序:~/.bashrc.d/

source ~/.bashrc # Source updated .bashrc
mkdir ~/.bashrc.d/
touch ~/.bashrc.d/001-bashother
chmod +x ~/.bashrc.d/001-bashother

  • source不是一个可执行文件,而是一个bash命令。
  • zsh$PATH确保在使用之前搜索当前目录source
  • .在 C shell 中无效

相关内容