我有一个简单的脚本来检查rbenv
是否是一个函数,当我在shell中输入:
$ type rbenv | grep "rbenv is a function"
时,我得到了积极的结果,shell响应是rbenv是一个函数
然后我想在一个脚本中执行这个操作,所以我在我的文件中写入:
#!/bin/bash
if type rbenv | grep -q "rbenv is a function" ;
then
echo "success!"
else
echo "something went wrong."
fi
我无法让这个功能正常运行,脚本的结果是something went wrong.
我想要让它正常工作,并且了解是否有更好的解决方案来完成此任务。
我也尝试了这个版本的脚本但没有成功。
if [[ $(type rbenv | head -1) == "rbenv is a function" ]] ;
...
在shell中输入type rbenv | head -1
,输出的结果应该是rbenv is a function
。我不知道我做错了什么,请指出我的错误。
解决这个问题的部分方法是在运行脚本之前在你的shell中运行export -f rbenv
,但这不是正确的方法,对吧?
完整的解决方案是,需要重新按照安装rbenv的步骤进行操作,并将其放在if语句之前:
export PATH="$HOME/.rbenv/bin:$PATH"
eval "$(rbenv init -)"
我要感谢参与讨论的所有人,他们引导我找到了解决方案 :)
rbenv
?你需要导出它以使子 shell 可见。 - perreal会给出其他结果
rbenv is /home/simone/.rbenv/bin/rbenv,并且从我的外部脚本输出导出
./rbenv_check: line 2: export: rbenv: not a function`。 - Szymon BłaszczyńskiPATH
中。导出一个函数意味着说export -f rbenv
。请参见下面的答案。 - tripleee