Почему использование . file в bash выполняет файл, даже если это не файл и исполняемый файл? Это потому, что он использует текущий сеанс bash для его запуска, чтобы он работал, например, набрав bash file?
Кроме того, вдоль аналогичных строк. Я знаю, что ввод > file удаляет содержимое файла. Но почему? Я понимаю, что это отправляет стандартный ввод в файл. Но не стандартный ввод клавиатуры? Так не следует ли мне перейти к новой теории в теории и типе? Я не понимаю.
Избегайте задавать два несвязанных вопроса в одном и том же сообщении.
1: он не работает точно так же, как bash file, потому что последний запускает новую оболочку, а . использует ту же текущую оболочку. Он работает как source file.
2: Стандартный стандартный ввод обычно является клавиатурой, но с запуском > file нет команды для запуска. Оболочка просто обрабатывает перенаправления, а затем завершает обработку (отсутствует) команды. То, что вы описали, было бы cat > file.