在我的目录下,/home/lucas/bin
我有以下脚本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]~$
当我cd ~/bin
,它运行良好sudo term_multiscreen
。当我在该目录之外时,它会返回command not found
./home/lucas/bin
我的里也有$PATH
。我究竟做错了什么?
顺便说一句,这是我的权限:
[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]~$
顺便说一句,我使用的是 Ubuntu 13.10
答案1
我建议使用完整路径调用您的脚本:sudo /home/lucas/bin/term_multiscreen
或sudo ~/bin/term_multiscreen
。这不会造成任何与sudo
s相关的安全风险secure_path
。
当然,输入太长(管理员很懒),所以将其放入您的别名中~/.bashrc
:
alias tmulti="sudo $HOME/bin/term_multiscreen"
然后重新加载你的~.bashrc
测试:
. ~/.bashrc
tmulti
如果您始终使用 调用脚本sudo
,您还可以删除sudo
脚本中的调用。
答案2
乌班图?
将别名定义为您的普通用户:alias sudo='sudo env PATH=$PATH'
。
或者,运行sudo visudo
并更改Defaults secure_path
为Defaults !secure_path
.然后,sudo
将不会使用编译选项,--with-secure-path
.