El script Bash devuelve "comando no encontrado" cuando está fuera de la carpeta de origen

El script Bash devuelve "comando no encontrado" cuando está fuera de la carpeta de origen

En mi directorio, /home/lucas/bintengo 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/binen 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_multiscreeno sudo ~/bin/term_multiscreen. Esto no creará ningún riesgo de seguridad relacionado sudocon 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 ~.bashrcpara probar:

. ~/.bashrc
tmulti

Si siempre llama a su script con sudo, también puede eliminar las sudollamadas dentro del script.

Respuesta2

¿Ubuntu?

Defina un alias como su usuario habitual: alias sudo='sudo env PATH=$PATH'.

O ejecute sudo visudoy cambie Defaults secure_patha Defaults !secure_path. Entonces, sudono utilizará la opción compilada --with-secure-path.

información relacionada