了解sudo和“。”

我正在阅读MySQL的手册 。

他们build议我这个命令

cd /usr/local/mysql sudo ./bin/mysqld_safe // it seems that sudo = . + master rights 

是相同的

 . /usr/local/mysql/bin/mysql // only ., no master rights 

这两个命令是一样的吗?

 . /some/path 

执行[或包含 – 执行]你指向的shell脚本。

 ./some/path 

[注意点后缺less空格]使用相对path[从当前目录,而不是从文件系统的顶部]执行程序/脚本]

sudo用其他[通常是root]用户的权限执行给定的命令。

之间有区别

 cd /usr/local/mysql ./bin/mysqld_safe 

 /usr/local/mysql/bin/mysqld_safe 

不同之处在于当前的工作目录。 对于mysql可能不会计量,但对于其他/使用相对path写得不好的程序 – 它可能会计量。

不,这些命令是完全不同的。 你可能有一个错字 – 下面的两个命令等价的:

 cd /usr/local/mysql sudo ./bin/mysqld_safe 

和:

 sudo /usr/local/mysql/bin/mysqld_safe 

来自Freshmeat :

Sudo(su“do”)允许系统pipe理员授权某些用户(或用户组)以权限运行某些(或全部)命令,同时提供命令及其参数的审计跟踪。

我不确定你对此感到困惑,但是你可能会基于这个问题。

如果你只是为什么而困惑

 cd /usr/local/mysql ./bin/mysqld_safe 

是相同的

 /usr/local/mysql/bin/mysqld_safe 

这是因为在UNIX中, 表示当前目录。 所以用这种方法,你不会search你最近的mysqld_safe的PATHvariables并运行它,你将特别运行/ usr / local / mysql / bin /。

在这个命令中:

 cd /usr/local/mysql sudo ./bin/mysqld_safe 

启动mysql服务器。 正如其他人所说,这个时期代表了当前的目录。 以这种方式使用它,例如,覆盖$ PATH或执行不在$ PATH中的程序。 请记住,在bash等,当前目录不在$ PATH中,除非你添加“。” (不build议出于安全原因)。

那么这个命令允许你访问mysql

 /usr/local/mysql/bin/mysql 

请注意,此命令中根本没有点(“。”)。