Я следовал учебному руководству по сережке на ROS Wiki. Я столкнулся с этим: Для добавления рабочей области к среде ROS, необходимо получить сгенерированный файл настройки:
$ . ~/catkin_ws/devel/setup.bash
Мой вопрос: Каков этот конкретный синтаксис для определения источника? Разве мы не должны использовать исходную команду? Насколько я знаю. относится к текущему каталогу.Заранее спасибо.
$ 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.