Страницы

Поиск по вопросам

суббота, 11 апреля 2020 г.

Смена текущего каталога из дочернего процесса

#ruby #процесс

                    
Подскажите, возможно ли сменить директорию из руби-скрипта в окне консоли, из которой
он был вызван?

Что то вроде:

# test.rb
`cd /new/dir`


Желаемый результат:

$ pwd
/my/test/dir
$ ruby test.rb && pwd
/new/dir

    


Ответы

Ответ 1



краткий ответ: это невозможно. чуть более длинный ответ (с некоторыми упрощениями и без кучи оговорок): текущий каталог — это свойство процесса. свойство это наследуется «дочерними» процессами от «родительского». когда вы в оболочке выполняете, например, команду ruby ..., оболочка запускает «дочерний« процесс (делает fork), который уже и «загружает в себя» бинарный файл /usr/bin/ruby. этот «дочерний» процесс (под управлением загруженного бинарника), конечно, может изменить своё свойство — текущий каталог, и даже передать его «по наследству потомкам». но на «родительский» процесс он никакого влияния оказать не может.

Ответ 2



сменить директорию в окне консоли можно, если устроит создание дочернего шелла # chdir.rb Dir.chdir ARGV[0] exec "bash" $ pwd /home/me/dir1/dir2 $ ruby chdir.rb .. $ pwd /home/me/dir1

Комментариев нет:

Отправить комментарий