내 디렉토리 아래에 /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]~$
그런데 나는 우분투 13.10을 사용하고 있습니다
답변1
전체 경로를 사용하여 스크립트를 호출하는 것이 좋습니다: sudo /home/lucas/bin/term_multiscreen
또는 sudo ~/bin/term_multiscreen
. 이로 인해 sudo
' 에 연결된 보안 위험이 발생하지 않습니다 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