在我的目錄下,/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
.