я читаю Руководства по MySQL.
Они предлагают мне, чтобы команда
cd /usr/local/mysql
sudo ./bin/mysqld_safe // it seems that sudo = . + master rights
такой же как
. /usr/local/mysql/bin/mysql // only ., no master rights
Две команды одинаковы в действии?
Нет, это совершенно разные команды. У вас может быть опечатка - следующие две команды являются эквивалент:
cd /usr/local/mysql
sudo ./bin/mysqld_safe
И:
sudo /usr/local/mysql/bin/mysqld_safe
. /some/path
выполняет [или включает - что является выполнением] указанного вами сценария оболочки.
./some/path
[обратите внимание на нехватку места после точки] выполняет программу / сценарий с использованием относительного пути [из текущего каталога, а не из верхней части файловой системы]
sudo выполняет данную команду с правами другого [обычно root] пользователя.
есть разница между
cd /usr/local/mysql
./bin/mysqld_safe
и
/usr/local/mysql/bin/mysqld_safe
разница в текущем рабочем каталоге. для mysql, вероятно, это не счетчик, но для других / плохо написанных программ, которые используют относительные пути - он может измерять.
Из Свежее мясо:
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 /.
В этой команде:
cd /usr/local/mysql
sudo ./bin/mysqld_safe
начинает mysql
сервер. Как говорили другие, точка обозначает текущий каталог. Он используется таким образом, например, для переопределения $ PATH или для выполнения программы, не входящей в $ PATH. Помните, что в bash и т. Д. Текущий каталог не находится в $ PATH, если вы не добавите "." к нему (не рекомендуется из соображений безопасности).
Затем эта команда позволяет получить доступ mysql
:
/usr/local/mysql/bin/mysql
Обратите внимание, что в этой команде нет точки (".").