真的,我不确定是否要求用户在运行命令之前确保他们在他们的主目录中,如果没有则中止或者只是为他们更改目录?
Dir.chdir
不带参数默认为用户主目录,当块完成时返回上一个目录
Dir.chdir do
puts Dir.pwd
end
puts Dir.pwd
# => 'Users/Brian'
# => '/Users/Brian/gems/etc...'
我需要chdir
在整个代码中多次。这个靠谱吗?
有人对做这种事情的最佳方法有任何见解吗?
真的,我不确定是否要求用户在运行命令之前确保他们在他们的主目录中,如果没有则中止或者只是为他们更改目录?
Dir.chdir
不带参数默认为用户主目录,当块完成时返回上一个目录
Dir.chdir do
puts Dir.pwd
end
puts Dir.pwd
# => 'Users/Brian'
# => '/Users/Brian/gems/etc...'
我需要chdir
在整个代码中多次。这个靠谱吗?
有人对做这种事情的最佳方法有任何见解吗?
如果您使用的 Ruby 版本高于 1.9,则该Dir
模块提供了一个方法#home
. 但是,这取决于在HOME
用户的 shell 会话中设置的环境变量。为了可靠地获取主目录,您应该将当前用户的登录名传递给Dir.home
命令。或者,在代码中:
# Works if HOME is set in the environment i.e., if "echo $HOME" returns the home directory
# when that command is run on the command-line
Dir.home # => /Users/<username>, Works if HOME is set
# If the HOME environment variable is not set, you should explicitly pass in the username
# of the currently logged-in user
Dir.home(username) # => /Users/<username>
# The current username can be obtained using
username = `whoami`
# or
require 'etc'
username = Etc.getlogin
现在是最后一个警告:这适用于 *nix。