Цель sudo
должен выполнить команду, данную ему с полномочиями пользователя root.
Цель su
должен переключить текущий пользовательский контекст. Это - в основном предшественник sudo. Если никакое имя пользователя не указано для su, то он переключается на корень.
Точно то, что сделает su, зависит от значения -something
. Можно получить некоторое руководство путем взгляда на man su
.
sudo su
самостоятельно довольно общий прием для припадания до корневой оболочки, если по некоторым причинам sudo -i
не доступно.
При работе с кодами возврата «0» - это успех и ненулевой нелевой. Синтаксис цикла в то время как:
while COMMANDS; do ...; done
A , в то время как оператор
проверяет код возврата последней команды в предоставленном списке команд. В вашем последний пример в то время как 0
, это попытается выполнить команду, называемую «0», и проверьте его код возврата.
Литерал 0 не является особенным для Bash вне арифметического контекста. Внутри этого контекста 0 считается ложным. Например,
while (( 0 )); do
... # never executes
end
Этот случай особенный как ключевое слово ((
рассматривается как команда, которая возвращает ненулевое значение, потому что это результат 0.
Оболочка не расширяется, как вы думаете.
В оболочке код ошибки 0
указал, что команда успешно завершена. Любой ненулевой код ошибки указал, что произошла ошибка.
Для более кратко POSIX определяют , в то время как цикл как:
цикл, когда цикл, должен постоянно выполнять один составный список, если Другой составной список имеет нулевой статус выхода.
Формат цикла в то время как следует следующим образом:
while compound-list-1
do
compound-list-2
done
Соединение-списков-1 должно быть выполнено, и если он имеет ненулевой выход Состояние, когда команда пока завершится. В противном случае то Соединение-списков-2 должно быть выполнено, и процесс должен повторяться.
Код выхода не является логическим значением, является целым числом, по согласованию нулевое значение является успехом, поэтому вы думаете в отрицательной логике от точки зрения Баша
Я думаю, что частью проблемы является то, как вы определили свои переменные. Вместо того, чтобы писать это:
MAIN_DIR=/home/ec2-user/dir/
LAST_DIR=$(ls -d -t ${MAIN_DIR}*/ | head -1)
Я бы рекомендовал вам опустить завершающие /
из MAIN _ DIR
и использовать его там, где это необходимо:
MAIN_DIR=/home/ec2-user/dir
LAST_DIR=$(ls -d -t ${MAIN_DIR}/*/ | head -1)
Это, я подозреваю, может помочь вам определить, что происходит. Не видя, что находится внутри dir
и bitcoin
, я не могу предложить ничего более конкретного.
В качестве проблемы стиля, я бы также настоятельно рекомендовал вам цитировать переменные (и их значения), чтобы неожиданные места в значениях не нарушали ваш код:
MAIN_DIR='/home/ec2-user/dir'
LAST_DIR=$(ls -d -t "${MAIN_DIR}"/*/ | head -1)
-121--229959- Разумно ожидать, что PlayOnLinux будет немного тяжелее собственного. PlayOnLinux полагается на вино, что приводит к целому уровню накладных расходов на виртуализацию.
Steam on otherhand - это скорее захватная сумка некоторых нативных игр и некоторых игр с винной оберткой, поэтому некоторые будут работать более гладко, чем другие, в зависимости от того, кто/как он был портирован.
Кроме того, разница между графическими драйверами opensource и драйверами-инициаторами может вызвать или нарушить игровой процесс.
Это лишь некоторые общие обобщения, некоторые особенности вашей игры/оборудования помогут.
Что такое настройка графического оборудования/драйвера? Если вы не уверены, это может помочь
lspci | grep VGA
-121--209952- Команда «while» не ищет логического значения, она ищет код возврата «0», который указывает на успешное выполнение команды. В случае команды while команда, возвращающая 0, имеет значение «true», а все остальное - «false».
Даже при выполнении сравнения Баш воспринимает это как команду, которая возвращает успешный код ошибки (0), когда сравнение истинно.