# Source global definitions
[ -f /etc/bashrc ] && . /etc/bashrc
这显然导致了我的Bash重复。
单线是什么意思?
答案 0 :(得分:11)
检查文件/ etc / bashrc是否存在,如果检查成功则执行它。 dot命令是'source'命令的别名。
答案 1 :(得分:8)
如果/ etc / bashrc存在(-f operator)执行它。
这是因为和&& (逻辑AND运算符)仅在第一个参数为真(加速)时才计算第二个参数。因此,如果该文件存在,请运行它!
它实际上被称为“AND List Construct”。
请参阅here了解更多信息。
您也可以考虑以下常用示例:
make && make install
只有在make成功完成后才会安装。
答案 2 :(得分:8)
你可能会感到困惑:[
实际上是一个Unix shell命令。您可以在/bin
中找到它,当您仔细观察时,它是test
命令的硬链接,这意味着您也可以写:
test -f /etc/bashrc && source /etc/bashrc
(.
是source
)的快捷方式。
您的娱乐历史记录:当Unix被发明时,没有屏幕,但“电传手机”是一种打字机。您向Unix主机发送了一个命令,电传打字机将打印结果。谣言是这样的:由于早期的Unix开发人员厌倦了所创建的电传类型,他们试图将所有命令缩短为两个字母,所有选项都缩短为一个字母。
如果你是绿色,那么谣言就是:为了节省纸张和墨带,他们试图将所有命令缩短为两个字母,将所有选项缩短为一个字母。
如果您查看/dev
,您会看到所有tty
个文件,这是原始电传类型中唯一剩下的内容。
[编辑]如何确定[
和test
是一样的:
这是一个两步过程。 ls -il [ test echo
给出:
356954 -r-xr-xr-x 2 root wheel 46K May 31 2008 [
356954 -r-xr-xr-x 2 root wheel 46K May 31 2008 test
67392 -rwxr-xr-x 1 root wheel 18K Sep 22 2007 echo
首先,你注意到“root”之前的“2”。这意味着有两个目录条目(a.k.a文件名)指向相同的数据(Unix术语:inode,i-node或“索引节点”)。磁盘上的每个inode都有一个唯一的编号,这是上例中的第一个编号(356954)。您可以看到[
和test
共享相同的inode,但echo
没有。
请注意,没有快速获取指向同一inode的所有目录条目的方法。您必须在整个文件系统中搜索具有相同inode的条目(使用find /path -inode 356954
)
[EDIT2]至于tty“文件”:这些实际上是设备节点。权限的第一个字母是“c”,如“字符设备”中所示。你可以找到文件“ - ”,目录“d”和块设备“b”(如硬盘,软盘等)。这不是一个文件,但它确实是一个程序。您可以通过向其发送数据(“写入”文件中的某些内容)或从中读取数据来与之通信。这个概念似乎与真实文件非常接近,Unix发明者使用文件API加上一些名为“IO控制”(或ioctl)的东西来发送特殊命令(比如查询终端的大小)。
如果切换到控制台模式(“Ctrl-Alt-F1”),您会看到如下内容:
Welcome to .... - Kernel .... (tty1)
切换到另一个控制台(使用Alt-F2 ... Alt-F6),您会看到它们已连接到tty2
到tty6
。登录其中一个并尝试
回声测试>的/ dev / tty1上
字符串将出现在连接到tty1
的控制台上。从tty读取是不容易的,因为已经有一个程序读取它(只要你没有登录mingetty
,登录后login
或bash
就可以了。如果您尝试read line < /dev/tty1
,那将与已在该控制台上运行的程序冲突,但原则上它会起作用。
答案 3 :(得分:2)
我不确定你为什么不在这里问:) http://comments.pixelbeat.org/settings/
该命令的更详细的等价物是:
if test -r /etc/bashrc; then
source /etc/bashrc
fi