En mi directorio, /home/lucas/bin
tengo el siguiente 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]~$
Cuando lo hago cd ~/bin
, funciona bien con sudo term_multiscreen
. Cuando estoy fuera de ese directorio, devuelve command not found
. También tengo /home/lucas/bin
en mi $PATH
. ¿Qué estoy haciendo mal?
Por cierto, aquí están mis permisos:
[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]~$
Por cierto, estoy en Ubuntu 13.10
Respuesta1
Sugeriría llamar a su script con su ruta completa: sudo /home/lucas/bin/term_multiscreen
o sudo ~/bin/term_multiscreen
. Esto no creará ningún riesgo de seguridad relacionado sudo
con secure_path
.
Por supuesto, es demasiado largo para escribirlo (los administradores son vagos), así que colóquelo en un alias en su ~/.bashrc
:
alias tmulti="sudo $HOME/bin/term_multiscreen"
Luego recarga tu ~.bashrc
para probar:
. ~/.bashrc
tmulti
Si siempre llama a su script con sudo
, también puede eliminar las sudo
llamadas dentro del script.
Respuesta2
¿Ubuntu?
Defina un alias como su usuario habitual: alias sudo='sudo env PATH=$PATH'
.
O ejecute sudo visudo
y cambie Defaults secure_path
a Defaults !secure_path
. Entonces, sudo
no utilizará la opción compilada --with-secure-path
.