Я пытаюсь выполнить команды оболочки с помощью ruby, но я не могу изменить каталог PATH с пробелами.shell cd command в Ruby
variable = %x[cd #{ENV["HOME"]}/Virtual\\ VMs/]
Это не работает. Спасибо
Я пытаюсь выполнить команды оболочки с помощью ruby, но я не могу изменить каталог PATH с пробелами.shell cd command в Ruby
variable = %x[cd #{ENV["HOME"]}/Virtual\\ VMs/]
Это не работает. Спасибо
Чтобы быть абсолютно безопасен:
path = File.join [ENV["HOME"], 'Virtual VMs']
variable = %x[cd '#{path}']
Пожалуйста, обратите внимание, что cd
имеет пустой вывод, так чтобы убедиться, что он работает один, вероятно, хочет сделать что-л, как:
path = File.join [ENV["HOME"], 'Virtual VMs']
variable = %x[cd '#{path}' && ls -la]
#⇒ "total 32\ndrwxr-xr-x ....."
Что Предполагается ли это делать? Вы пытаетесь chdir в каталог, но тогда ничего не делаете. Ваш variable
будет пустым в любом случае. Помимо того факта, что это бессмысленно делать, вы не можете надежно выполнить cd самостоятельно таким образом, потому что это не исполняемый файл. Вы можете увидеть это, если просто выполните %x[cd]
. Вы получите исключение Errno::ENOENT
.
Возможно, вам следует сначала описать в более широком контексте то, что вы хотите достичь с помощью своего кода. Где бы вы хотели изменить рабочий каталог? В рамках Ruby-процесса - в этом случае вы должны использовать Dir.chdir
- или в дочернем процессе - в этом случае вам нужно выполнить некоторую команду после cd.
Im пытается проверить информацию о виртуальной машине, выделенной в:/root/Virtual VMs/folder/folder, поэтому сначала мне нужно сменить каталог im working – eifersucht
i, что Dir.chdir - лучший способ, но я не могу изменить путь с пробелами на нем, система сообщает Message: Errno :: ENOENT: Нет такого файла или каталога @ dir_chdir – eifersucht
Снова: 'Dir.chdir File.join [ENV [" HOME "], 'Virtual VMs']' отлично работает. – mudasobwa
'variable =% x [cd # {ENV [" HOME "]}/Virtual \\ VMs /]' работает для меня – Santhosh
Почему вы просто не используете 'Dir.chdir' из Ruby std? https://ruby-doc.org/core-2.2.0/Dir.html#chdir-method –
Я использовал его. Спасибо – eifersucht