And*_*anu 1 ubuntu bash path arch-linux
使用:
Linux nomemory 2.6.32-24-generic #43-Ubuntu SMP Thu Sep 16 14:17:33 UTC 2010 i686 GNU/Linux
Run Code Online (Sandbox Code Playgroud)
我在我的文件夹$HOME
名为~/.scriptfarm/scripts
那里我继续我的一些自定义脚本。
nomemory@nomemory:~$ ls -l /home/nomemory/.scriptfarm/script
total 20
-rwxr-xr-x 1 nomemory nomemory 10 2010-09-21 01:31 aaa
-rwxr-xr-x 1 nomemory nomemory 31 2010-09-21 00:47 pt.chc
-rwxr-xr-x 1 nomemory nomemory 35 2010-09-21 00:47 pt.int
-rwxr-xr-x 1 nomemory nomemory 34 2010-09-21 00:47 pt.rem
-rwxr-xr-x 1 nomemory nomemory 54 2010-09-21 00:47 pt.up
Run Code Online (Sandbox Code Playgroud)
问题是在 Ubuntu 中,当前缀为sudo
. 在脚本运行的 Arch 上,行为是不同的。
让我给你举个例子(aaa
是一个 foobar 类型的脚本):
nomemory@nomemory:~$ aaa
aaa
nomemory@nomemory:~$ sudo aaa
sudo: aaa: command not found
nomemory@nomemory:~$
Run Code Online (Sandbox Code Playgroud)
如果回声 $PATH:
nomemory@nomemory:~$ sudo echo $PATH
/home/nomemory/.scriptfarm/script:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games
Run Code Online (Sandbox Code Playgroud)
你知道为什么我的脚本不工作,如果我用sudo
. 任何解决方案?
后来的编辑:
我发现的解决方法是为 sudo: 添加一个别名sudo env PATH=$PATH $@
。
您的测试具有误导性,因为 PATH 在调用 sudo 之前已扩展。相反,请执行以下操作:
sudo sh -c 'echo $PATH'
Run Code Online (Sandbox Code Playgroud)
你会看到有一条不同的路径。
要包含/home/nomemory/.scriptfarm/scripts
在系统范围的 PATH 中,您可以修改/etc/profile
:
PATH="$PATH:/home/nomemory/.scriptfarm/scripts"
Run Code Online (Sandbox Code Playgroud)