我尝试到处寻找这行代码在我的 .bashrc 中的作用。我想知道的原因是因为现在 ~/.pam_environment 是受到推崇的。这是行:
[[ -s /home/$USER/.nvm/nvm.sh ]] && . /home/$USER/.nvm/nvm.sh
我认为我已经将其缩小到条件检查以确保文件nvm.sh
存在并且大于 0 字节。但我不明白接下来的内容。&&
通常表示“和”,但我不明白为什么在检查之后需要这样做,也不明白为什么.
没有附加到文件名。
基本上我想知道的是,如何将其放入.pam_environment
仅接受赋值表达式的文件中。
编辑:此行目前允许我从终端运行 NVM,但我真的很想了解,只是为了学习。
答案1
是的,您说得对,[[ -s ... ]
检查文件是否存在。如果存在,它将以状态退出0
,如果不存在,它将以状态退出1
(即失败)。
&&
如果前一个命令成功(即退出状态为 ),则命令/操作符/其他命令将运行下一个命令。0
相反||
,如果前一个命令失败(即不失败0
),则运行下一个命令。
在.
文件名之前(中间有空格)运行该文件,但也会保留它所做的任何环境变量更改。例如,如果我test.sh
这样做:
#!/bin/bash
FOO=bar
BAR=baz
BAZ=foo
PATH="FOO:$PATH"
并且我运行. path/to/test.sh
,将会有新的变量:FOO
、BAR
和BAZ
,并且PATH
将会更新。请注意source
,我认为 的作用与 相同.
。编辑:是的,source
和.
在 bash 中是同义词。