どのように実行し、バックティックpushd
をpopd
使用しますか?
バックティックで実行するpushd /tmp
と、エラーが発生します。
"No such file or directory - pushd /tmp"
どのように実行し、バックティックpushd
をpopd
使用しますか?
バックティックで実行するpushd /tmp
と、エラーが発生します。
"No such file or directory - pushd /tmp"
Rubyシェルアウト(バックティック)はそれぞれ新しいサブシェルで実行されるため、おそらくあなたが考えている方法では機能しません。
a = `pwd`
`cd '/tmp'`
b = `pwd`
b == a # => true
b == "/tmp" # => false
また、あなたは確かpushd
にあなたのシェルで動作しますか?たぶん、ルビーの使用を検討するか、バッククォート構文よりも便利なものが必要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はBashビルトインであり、実行可能ファイルではありません。ただし、 RubyShellモジュールでも同様の機能を利用できます。
require 'shell'
shell = Shell.new
shell.pushd '/tmp'
shell.popd