首先,我是Linux的新手,请原谅我是否有任何术语错误;我会尝试尽可能胜任地解决问题。
我已经通过Linuxbrew安装了Ruby(2.4.0
)。 ruby
命令工作正常;它安装正确。但是,当我尝试使用gem
命令(Ruby应该安装)时,我收到此错误:
bash: /usr/bin/gem: No such file or directory
现在,因为我用Linuxbrew安装了这个,我知道这个目录不正确。例如:
which gem
的结果:/home/me/.linuxbrew/bin/gem
which ruby
的结果:/home/me/.linuxbrew/bin/ruby
因此,似乎安装了gem
,但gem
命令未链接到正确的路径。我假设我需要将gem
命令指向which gem
的路径,而不是bash说不存在的/usr/bin/gem
。我该如何改变这个?我徒劳地尝试改变bash_profile
,但我不知道该怎么做。
再次,如果ruby
和gem
未被称为命令,并且问题不在"默认目录"如标题中所述。我不确定如何标记它。
EDIT / TL; DR:
基本上,我如何让gem
执行此操作:/home/me/.linuxbrew/bin/gem
而不是在/usr/bin/gem
中查找该程序?
答案 0 :(得分:1)
运行function getEmptyExamScores($conn, $course_code, $level, $year, $semester) {
$stmt = $conn->prepare('SELECT * FROM exams INNER JOIN register_course ON exams.course_code = register_course.course_code WHERE exams.course_code = :exams.course_code AND level = :level AND year = :year AND semester = :semester;');
$stmt->execute(['exams.course_code' => $course_code, 'level' => $level, 'year' => $year, 'semester' => $semester]);
return $stmt->fetchAll();
}
,而不是运行gem
,即输入完整路径名(后跟您可能需要的任何参数)。
如果这太麻烦了,你可以改变你的路径。使用
添加bin目录/home/me/.linuxbrew/bin/gem
答案 1 :(得分:1)
首先,您收到错误/usr/bin/gem not found
的原因是,在同一个shell会话中,该文件曾经存在。当多次运行相同的命令时,Bash会对此进行缓存以加快速度。运行hash -r
将清除此信息。
编辑您似乎已经管理的PATH
,因此which
命令会给出结果。
答案 2 :(得分:0)
回答我自己的问题 -
正如我之前在同一个终端窗口中通过apt-get而不是Linuxbrew安装和卸载Ruby,Bash在gem
中寻找usr/bin
而不是我{{1}中指定的路径Linuxbrew。
因此,我确信,Stian上面用bash_profile
的回答也会有效。