Настройка поиска.* Sh файлы catkin

Я следовал учебнику по скину на вики ROS. Я сталкивался с этим: чтобы добавить рабочую область в вашу среду ROS, вам нужно создать сгенерированный установочный файл:

$ . ~/catkin_ws/devel/setup.bash

Мой вопрос: что это за синтаксис? Разве мы не должны использовать исходную команду? Насколько я знаю,. ссылается на текущий каталог. Заранее спасибо.

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
Другие вопросы по тегам