Родитель колотит сценарий, помнят историю CD из дочернего сценария удара?

По крайней мере, в ударе, пока нет никаких имен файлов, содержащих пробелы и новые строки, это:

mkdir $(< myfile) 

работы. Таким образом, у нас есть бесполезное использование for, xargs также.

<не запускает новый процесс в ударе, в отличие от cat, но я не знаю для ksh.

2
21.12.2012, 09:09
2 ответа

Да выполняемый процесс не изменит рабочий каталог родительского процесса.

Пример:

  • 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 родительский процесс имеет все еще тот же рабочий каталог

3
27.01.2020, 22:07

"Ребенок" ничего не помнит. Это - просто фундаментальное понятие, которое процессы запускаются со своего текущего рабочего каталога (cwd). При рассмотрении/proc /* в системе Linux, Вы видите что запись для каждого процесса.

0
27.01.2020, 22:07

Теги

Похожие вопросы