你如何运行pushd
和popd
使用反引号?
每当我pushd /tmp
在反引号中运行时,我都会收到一个错误:
"No such file or directory - pushd /tmp"
你如何运行pushd
和popd
使用反引号?
每当我pushd /tmp
在反引号中运行时,我都会收到一个错误:
"No such file or directory - pushd /tmp"
Ruby shell-outs(反引号)每个都在一个新的子 shell 中运行,因此它可能无法按照您的想法工作:
a = `pwd`
`cd '/tmp'`
b = `pwd`
b == a # => true
b == "/tmp" # => false
另外,你确定pushd
在你的shell中工作吗?也许看看使用 ruby,system
或者popen3
如果你想要比反引号语法更有用的东西。
Dir#chdir
接受一个块。这是文档中的一个示例,如果您只需要在目录中运行一些命令然后改回:
Dir.chdir("/var/spool/mail")
puts Dir.pwd
Dir.chdir("/tmp") do
puts Dir.pwd
Dir.chdir("/usr") do
puts Dir.pwd
end
puts Dir.pwd
end
puts Dir.pwd
你不能这样使用带有反引号的pushd ;pushd是内置的 Bash,而不是可执行文件。但是,您可以使用 Ruby Shell模块获得类似的功能。
require 'shell'
shell = Shell.new
shell.pushd '/tmp'
shell.popd