通过别名运行Ruby脚本时如何获取终端当前真实工作目录
问题原因
你目前使用的File.dirname(File.realpath(__FILE__))逻辑本身是用来获取Ruby脚本文件自身所在的存储路径的,__FILE__是Ruby内置常量,永远绑定当前脚本的文件路径,所以不管你在哪个目录执行脚本,返回的都是脚本存放的~/mycli目录,和执行命令时的工作目录无关。
修复方法
直接使用Ruby内置的Dir.pwd方法即可,它会返回当前Ruby进程的工作目录,也就是你执行run_me命令时终端所在的真实路径。
示例代码:
# 在脚本开头就可以直接调用,无需依赖__FILE__常量 current_work_dir = Dir.pwd # 输出的就是你执行命令时终端所在的目录,比如 ~/some_random_directory puts current_work_dir
注意事项
如果你的脚本逻辑中存在Dir.chdir切换目录的操作,建议在脚本最开头就将Dir.pwd的返回值存入变量留存,避免后续切换目录后无法获取初始执行路径。
内容的提问来源于stack exchange,提问作者user391986
相关产品推荐
相关产品推荐

