no meu diretório, /home/lucas/bin
tenho o seguinte script term_multiscreen
:
[lucas@lucas-ThinkPad-W520]~$ sudo cat bin/term_multiscreen
#!/bin/bash
# Initializes Nvidia Optimus for multi-screen functionality.
xorg_process=$(ps aux | grep 'Xorg' | grep -v grep | awk '{print $2}')
sudo kill -15 $xorg_process
sudo rmmod nvidia
sudo tee /proc/acpi/bbswitch <<<OFF
# xrandr --output VIRTUAL1 --off
[lucas@lucas-ThinkPad-W520]~$
Quando eu cd ~/bin
, funciona bem com sudo term_multiscreen
. Quando estou fora desse diretório, ele retorna command not found
. Também tenho /home/lucas/bin
no meu $PATH
. O que estou fazendo de errado?
Aliás, aqui estão minhas permissões:
[lucas@lucas-ThinkPad-W520]~$ ls -la bin/
total 44
drwxr-xr-x 2 lucas lucas 4096 May 6 15:43 .
drwxr-xr-x 71 lucas lucas 4096 May 6 15:43 ..
-rwx--x--x 1 root root 137 Mar 2 03:26 init_multiscreen
-rw-r--r-- 1 lucas lucas 0 Mar 2 03:24 init_optimus~
-rwx--x--x 1 root root 260 Mar 2 05:54 term_multiscreen
[lucas@lucas-ThinkPad-W520]~$
A propósito, estou no Ubuntu 13.10
Responder1
Eu sugeriria chamar seu script com o caminho completo: sudo /home/lucas/bin/term_multiscreen
ou sudo ~/bin/term_multiscreen
. Isso não criará nenhum risco de segurança relacionado sudo
ao secure_path
.
É claro que é muito longo para digitar (os administradores são preguiçosos), então coloque-o em um alias no seu ~/.bashrc
:
alias tmulti="sudo $HOME/bin/term_multiscreen"
Em seguida, recarregue o seu ~.bashrc
para testar:
. ~/.bashrc
tmulti
Se você sempre chama seu script com sudo
, também pode remover as sudo
chamadas dentro do script.
Responder2
Ubuntu?
Defina um alias como seu usuário regular: alias sudo='sudo env PATH=$PATH'
.
Ou execute sudo visudo
e mude Defaults secure_path
para Defaults !secure_path
. Então, sudo
não usaremos a opção compilada, --with-secure-path
.