为什么 `which tmux` 和 `sudo which tmux` 返回 2 个不同的值?

Oli*_*nde 2 sudo environment-variables which

ssh bobby@tony:~$ which tmux                                                                        
/usr/bin/tmux
ssh bobby@tony:~$ sudo which tmux                                                                   
/usr/local/bin/tmux
ssh bobby@tony:~$ echo $PATH                                                                        
/usr/bin:/bin:/usr/sbin:/sbin:/usr/local/bin:/usr/X11/bin:/usr/local/git/bin:/usr/local/sbin:/usr/local/sbin
ssh bobby@tony:~$ sudo echo $PATH                                                                   
/usr/bin:/bin:/usr/sbin:/sbin:/usr/local/bin:/usr/X11/bin:/usr/local/git/bin:/usr/local/sbin:/usr/local/sbin
Run Code Online (Sandbox Code Playgroud)

有谁知道这里发生了什么?为什么sudo which tmux返回 /usr/local/bin/tmux 而不是 /usr/bin/tmux?

PS:我安装了 2 个版本的 tmux(一个在 /usr/bin 中,另一个在 /usr/local/bin 中)。

Mat*_*Mat 14

这是因为您的root用户有不同的路径。

sudo echo $PATH
Run Code Online (Sandbox Code Playgroud)

打印你的路径。是您的 shell在 sudo开始之前进行变量扩展(并将其作为命令行参数传递,扩展)。

尝试:

sudo sh -c 'echo $PATH'
Run Code Online (Sandbox Code Playgroud)