По крайней мере, в ударе, пока нет никаких имен файлов, содержащих пробелы и новые строки, это:
mkdir $(< myfile)
работы. Таким образом, у нас есть бесполезное использование for
, xargs
также.
<не запускает новый процесс в ударе, в отличие от cat
, но я не знаю для ksh
.
Да выполняемый процесс не изменит рабочий каталог родительского процесса.
Пример:
caller.sh
#!/bin/bash
echo -n "Caller 1 " ; pwd
./callee.sh
echo -n "Caller 2 " ; pwd
callee.sh
#!/bin/bash
echo -n "Callee 1 " ; pwd
cd /tmp
echo -n "Callee 2 " ; pwd
exit
Вызов caller.sh
произведет
Caller 1 /Users/corti/tmp
Callee 1 /Users/corti/tmp
Callee 2 /tmp
Caller 2 /Users/corti/tmp
Поскольку Вы видите при печати Caller 2
родительский процесс имеет все еще тот же рабочий каталог
"Ребенок" ничего не помнит. Это - просто фундаментальное понятие, которое процессы запускаются со своего текущего рабочего каталога (cwd). При рассмотрении/proc /* в системе Linux, Вы видите что запись для каждого процесса.