Поскольку в другом принятом мной ответе есть некоторая путаница, я собираюсь написать свой собственный ответ, который отвечает именно на то, что я спросил, но я оставлю его как принятый ответ, поскольку он отвечает на вопрос, который есть в моем вопросе. был отредактирован так, чтобы быть вместо того, что было изначально.
-S
не является независимой командой, как предполагалось вначале. Это также не имеет ничего общего с креплением
. Это аргумент sudo
и / или gksu
(он делает что-то другое в зависимости от того, какую команду вы используете). (Итак, это должно быть gksu -S -
вместо gksu - -S
.) Вот что означает -S
в том смысле, в котором я был интересный. Однако, чтобы объяснить, что это означает помимо этого, я процитирую справку:
gksu -S
означает «Заставить GKSu использовать sudo вместо su, как если бы он был запущен как« gksudo »». sudo -S
означает «читать пароль со стандартного ввода». Также, похоже, нет необходимости использовать gksu -S
, когда вы можете более удобно использовать вместо него gksudo
. sudo -S
, с другой стороны, может иметь некоторое значение для паролей.
Нам просто нужно запустить команду от имени пользователя root (а не root). Вот почему мы используем gksudo
или gksu -S
вместо gksu
без -S
.
-
все еще должен быть там, хотя -S
является частью gksu
, иначе -o
будет считаться аргументом для гксу
тоже.
Итак, вот исправленный код:
#!/bin/bash
if mountpoint -q /home/myLaptop/myDesktop
then
notify-send -t 3000 "Warning" "It is already mounted."
else
gksudo -- mount -t nfs -o proto=tcp,port=2049 192.168.0.x:/home/myLaptop /home/myLaptop/myDesktop
if mountpoint -q /home/myLaptop/myDesktop
then
notify-send -t 3000 "Alert" "Mounted."
else
notify-send -t 3000 "Alert" "Mount failed."
fi
fi
Переменная PATH является специальной. Есть много специальных переменных (и все они с большой буквы, поэтому их легко избежать). PATH
содержит список каталогов для поиска команд.
Для развлечения и обучения (хотя это одно и то же), введите echo $PATH
, вне скрипта, чтобы посмотреть, что в нем есть.
Чтобы решить проблему, не ломайте PATH: используйте другое имя переменной (не все заглавные буквы).
Попробуйте / bin / ls
, кажется, что ls
не находится на пути, как @ 123 упомянул в комментарии.
Чтобы добавить / bin
в ПУТЬ
. Добавьте ~ / .bashrc
export $PATH=$PATH:/bin
Попробуйте:
#!/bin/bash
PATH="$PATH:$(dirname $0)"
ls $PATH
Таким образом вы добавляете $ (dirname $ 0)
в переменную PATH вместо ее замены. Или, если вы не хотите редактировать переменную среды и хотите использовать $ (dirname $ 0)
отдельно, используйте другое имя переменной.