Я просто читал о том, как работают оболочки Unix (в частности, bash
), и я попробовал что-то, что не имело для меня смысла.
Насколько я понимаю, source
команда запускает программу, которую вы даете ей в текущем процессе оболочки, вместо того, чтобы разветвлять дочерний процесс.
С другой стороны, выполнение команды, за которой следует &
возвращает управление пользователю до завершения запускаемого процесса. Если вы запускаете команду без source
но с &
, текущая оболочка возвращает управление пользователю до завершения дочернего процесса.
Но когда я создал файл с именем test.txt
содержащий hello world
, и запустил:
source /bin/cat test.txt
… Я получил -bash: ????: command not found
.
Точно так же, когда я пытался загрузить свой virtualenv, используя
source ./venv/bin/activate &
Я только что получил статус выхода и идентификатор процесса [1] 26489
В чем дело? Особенно для второй команды. Я не совсем понимаю.
Как работает source
, и что происходит, когда вы используете его с &
?