1

В UNIX такие оболочки, как Bash и Korn, оболочка exec используется для двух конкретных целей.

Его использование для замены текущей программы другой, как в exec prog , понятно. Имя exec является сокращением от подпрограмм семейства C, основанных на execve .

Если бы я писал оболочку и хотел, чтобы команда открыла файл, я бы назвал его open , но нет, оболочки Bash и Korn снова используют exec , как, например, в exec 3<file .

Почему команда exec повторно использована для чего-то совершенно другого?

2 ответа2

1

Это на самом деле не совсем другое: вы можете использовать перенаправления с командой

bash -c 'exec date > date.out' ; cat date.out

Почему бы не использовать его без команды

bash -c 'exec > date.out; date' ; cat date.out
1

Я опаздываю на вечеринку на 4 года, но я сам смотрю на это.

Просто отметьте, что вы должны быть осторожны с ответом Гленна, потому что в случае, когда вы используете exec как с командой, так и с перенаправлением, результатом является просто перенаправление.

Предположительно, команда 'exec'd' будет выполняться в подоболочке, а команды после нее в вызывающем скрипте все равно будут выполняться.

Что для меня предполагает, что эти два использования действительно должны быть двумя отдельными командами.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .