我一直在关注 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 中无效。