#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
Комментариев нет:
Отправить комментарий