Bash-如何更改命令

时间:2017-03-24 18:58:07

标签: linux bash linuxbrew

首先,我是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,但我不知道该怎么做。

再次,如果rubygem未被称为命令,并且问题不在"默认目录"如标题中所述。我不确定如何标记它。

EDIT / TL; DR:

基本上,我如何让gem执行此操作:/home/me/.linuxbrew/bin/gem而不是在/usr/bin/gem中查找该程序?

3 个答案:

答案 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的回答也会有效。