Определение источника установки. сережка файлов *sh

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

$ . ~/catkin_ws/devel/setup.bash

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

-1
задан 7 April 2019 в 19:06

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 не исполняемый файл, но a bash команда.
  • zsh гарантирует, что текущий каталог ищется прежде $PATH при использовании source.
  • . не допустимо в оболочке C.
1
ответ дан 25 October 2019 в 06:40

Другие вопросы по тегам:

Похожие вопросы: