gksu -- -S mount … 中的 -S 是什么意思?

gksu -- -S mount … 中的 -S 是什么意思?

因此,我有一个脚本用于-S mount nfs -o proto=tcp,port=2049 … etc.从另一台 Linux 计算机挂载某个位置。这是什么-S意思?无论有没有它,它似乎都可以正常工作(如果我gksu -- -S mount … etc.在没有终端模拟器的情况下启动它,它就不起作用)。我很好奇我是否确实-S出于某种原因需要,或者我是否可以放弃它来gksu --工作而不产生任何后果。

这是我写的脚本,供参考,更改了 IP 地址和路径以保护偏执狂:

#!/bin/bash

if mountpoint -q /home/myLaptop/myDesktop
then
  notify-send -t 3000 "Warning" "It is already mounted."
else
  gksu -- -S 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

答案1

--表示“选项结束”:后续参数不被视为选项,即使它们以破折号开头。这是一个准普遍公约。所以gktu -- -S mount …意味着运行命令-S

$ gksu -- -S whoami
sh: 0: Illegal option -S

看来您打算将-S选项传递给gksu,告诉它使用sudo而不是su。它需要先来--

$ gksu -S -- whoami
root

您确实需要,--因为否则gksu会认为该-o选项是针对其自身而不是针对mount

答案2

因为我接受的其他答案存在一些混乱,所以我将写下自己的答案,该答案准确地回答了我的问题,但我会将其保留为已接受的答案,因为它回答了我的问题已被编辑的问题而不是原来的样子。

-S并不像最初假设的那样是一个独立的命令。也与 无关mount。它是sudoand/or的参数gksu(根据您使用的命令,它会执行不同的操作)。 (所以,它应该gksu -S --代替gksu -- -S。)所以,这就是-S我想知道的意思。但是,为了解释除此之外的含义,我将引用帮助:

  • gksu -S意思是,“让 GKSu 使用 sudo 而不是 su,就好像它已作为“gksudo”运行一样。”
  • sudo -S意思是“从标准输入读取密码”。

gksu -S当您可以更容易阅读地使用它时,它似乎也没有必要使用gksudosudo -S另一方面,对于密码可能具有一定的重要性。

我们只需要以 root 身份运行命令(实际上不是 root)。所以,这就是我们使用gksudoorgksu -S而不是gksuwithout 的原因-S

--仍然需要在那里,即使-S是 的一部分,gksu否则也-o将被解读为 的参数gksu

所以,这是修改后的代码:

#!/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

相关内容