我在读MySQL 手册。
他们建议我使用这个命令
cd /usr/local/mysql
sudo ./bin/mysqld_safe // it seems that sudo = . + master rights
是相同的
. /usr/local/mysql/bin/mysql // only ., no master rights
这两个命令的作用相同吗?
答案1
. /some/path
执行 [ 或包括-即执行 ] 您所指向的 shell 脚本。
./some/path
[ 注意点后没有空格 ] 使用相对路径执行程序/脚本 [ 从当前目录执行,而不是从文件系统顶部执行 ]
sudo 使用其他用户(通常是 root 用户)的权限执行给定的命令。
有区别
cd /usr/local/mysql
./bin/mysqld_safe
和
/usr/local/mysql/bin/mysqld_safe
区别在于当前工作目录。对于 mysql 来说,这可能不会计量,但对于使用相对路径的其他/编写不良的程序 - 它可能会计量。
答案2
不,这些命令完全不同。你可能打错了——以下两个命令是相等的:
cd /usr/local/mysql
sudo ./bin/mysqld_safe
和:
sudo /usr/local/mysql/bin/mysqld_safe
答案3
从鲜肉:
Sudo(su“do”)允许系统管理员委托权限,使某些用户(或用户组)能够以 root 或其他用户身份运行某些(或全部)命令,同时提供命令及其参数的审计跟踪。
我不确定您是否对此感到困惑,但您可能会根据这个问题感到困惑。
如果你只是对为什么感到困惑
cd /usr/local/mysql
./bin/mysqld_safe
是相同的
/usr/local/mysql/bin/mysqld_safe
这是因为在 UNIX 中, . 表示当前目录。因此,您不会在 PATH 变量中搜索最近的 mysqld_safe 并运行它,而是专门运行 /usr/local/mysql/bin/ 中的那个。
答案4
在此命令中:
cd /usr/local/mysql
sudo ./bin/mysqld_safe
启动mysql
服务器。正如其他人所说,句点表示当前目录。它以这种方式使用,例如,覆盖 $PATH 或执行不在 $PATH 中的程序。请记住,在 bash 等中,当前目录不在 $PATH 中,除非您在其中添加“。”(出于安全原因不建议这样做)。
然后此命令允许您访问mysql
:
/usr/local/mysql/bin/mysql
请注意,此命令中根本没有点(“.”)。