3

我找到了这个命令。我了解源重新加载了 bash 配置文件并修复了 Ubuntu 所需的 Ruby 权限。但是 && 之前的部分是什么意思?

[[ -s "$HOME/.rvm/scripts/rvm" ]] && source "$HOME/.rvm/scripts/rvm" 
4

3 回答 3

5

让我们分解一下:

[[]]启用了更类似于传统编程语言的高级功能,允许使用像代替||-o代替&&的结构-a

有关这方面的更多信息,请参阅如何使用双括号或单括号、括号、花括号,但据我所知-s不需要额外的功能,双括号可以用单括号替换)

测试文件是否-s存在且非空

&&只要左边的命令执行没有错误返回码,就会自动运行右边的命令。

因此,该语句测试文件是否存在且非空,如果是,它将源它到当前的 shell 环境中。

于 2012-10-13T00:35:15.923 回答
3

[[ ... ]] 部分允许使用运算符测试条件。把它想象成一个 if 语句。在您的示例中,您使用的是 -s 运算符,它测试引用的文件是否为空。

因此,本质上,如果 rvm 文件不为空,您发布的命令将获取该文件的来源

于 2012-10-13T00:28:53.137 回答
1

[[是bash内置的测试功能。-s如果以下文件的大小大于零,则返回 true。请参阅man bash(条件构造)。向下滚动一点到[[...]]

于 2012-10-13T00:31:55.593 回答