O que significa -S em gksu - -S mount…?

1

Portanto, eu tenho um script que usa -S mount nfs -o proto=tcp,port=2049 … etc. para montar um local de outro computador com Linux. O que significa -S ? Parece funcionar muito bem com ou sem ele (não funciona se eu fizer como gksu -- -S mount … etc. para iniciá-lo sem um emulador de terminal). Estou curioso para saber se realmente preciso de -S por algum motivo ou se posso descartá-lo para que gksu -- funcione, sem consequências.

Aqui está o script que escrevi, para referência, com o endereço IP e os caminhos alterados para proteger o paranóico:

#!/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
    
por Shule 22.04.2016 / 20:55

2 respostas

5

-- significa "fim das opções": os argumentos subsequentes não são considerados opções, mesmo que iniciem com um traço. Esta é uma convenção quase universal. Então, gktu -- -S mount … significa executar o comando -S .

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

Parece que você pretendia passar a opção -S para gksu , para dizer que use sudo em vez de su . Precisa vir antes de -- .

$ gksu -S -- whoami
root

Você precisa de -- porque senão gksu pensaria que a opção -o é destinada a ela própria e não a mount .

    
por 23.04.2016 / 03:14
0

Como há alguma confusão na outra resposta que aceitei, vou escrever minha própria resposta, que responde exatamente ao que eu pedi, mas deixarei essa como a resposta aceita, já que ela responde à pergunta que minha pergunta foi editado para ser em vez do que era originalmente.

-S não é um comando independente como foi inicialmente assumido. Também não tem nada a ver com mount . É um argumento para sudo e / ou gksu (faz algo diferente dependendo de qual comando você usa). (Então, deve ser gksu -S -- em vez de gksu -- -S .) Então, é isso que -S significa no sentido que eu estava pensando. No entanto, para explicar o que significa além disso, citarei a ajuda:

  • gksu -S significa, 'Faça o GKSu usar sudo ao invés de su, como se tivesse sido executado como' gksudo '.'
  • sudo -S significa "ler a senha da entrada padrão".

Também parece ser desnecessário usar gksu -S quando você pode usar de forma mais legível gksudo . sudo -S , por outro lado, pode ter alguma importância com senhas.

Precisamos apenas executar um comando como root (na verdade, não é root). Então, é por isso que usamos gksudo ou gksu -S em vez de gksu sem -S .

-- ainda precisa estar lá, mesmo que -S faça parte de gksu . Caso contrário, -o será lido como um argumento para gksu também.

Então, aqui está o código alterado:

#!/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
    
por 24.04.2016 / 04:04

Tags