私のディレクトリには/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
Ubuntu?
エイリアスを一般ユーザーとして定義しますalias sudo='sudo env PATH=$PATH'
。
または を実行して にsudo visudo
変更します。これにより、コンパイルオプションは使用されません。Defaults secure_path
Defaults !secure_path
sudo
--with-secure-path