Bash 在 $PATH 中找不到脚本

Bash 在 $PATH 中找不到脚本

我正在设置一个全新的 Ubuntu 16.04 Minimal 系统,但遇到了一个奇怪的问题。即使添加到 后$HOME/bin$PATH似乎bash也找不到其中的任何脚本,至少对于root.

我已经退出好几次了,甚至重新启动过一次机器。该路径由/etc/profile.d:中的一行脚本设置export PATH="$PATH:$HOME/bin"

root@Pioneer ~ # echo $PATH
/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games:/snap/bin:/root/bin
root@Pioneer ~ # ls -la /root/bin
total 36
drwxr-xr-x 2 root root 4096 Feb  6 16:04 .
drwx------ 8 root root 4096 Feb  6 16:03 ..
-rwxr-xr-x 1 root root  174 Jan  5  2017 newuser
-rwxr-xr-x 1 root root  236 Nov  3  2015 own
-rwxr-xr-x 1 root root   87 May  6  2017 re-dns
-rwxr-xr-x 1 root root   57 May 10  2016 re-ftp
-rwxr-xr-x 1 root root   89 Oct 20  2015 re-mail
-rwxr-xr-x 1 root root   42 Oct 19  2015 re-smb
-rwxr-xr-x 1 root root   65 Oct 19  2015 re-web
root@Pioneer ~ # newuser
-bash: newuser: command not found

/root/bin/newuser有效,就像 一样cd /root/bin && ./newuser

名称中没有尾随空格:

# ls -lb /root/bin/newuser
-rwxr-xr-x 1 root root 174 Jan 5 2017 newuser

Root 的家确实是/root

# getent passwd root
getent: root:x:0:0:root:/root:/bin/bash 

答案1

谢谢特登对于小费;通过使用,strace -e stat bash -c "newuser" 2>&1 | grep /root/bin我发现一个不可见的回车符以某种方式楔入配置文件脚本中的结束引号之前,使实际的路径成为/root/bin\r.我删除并重新输入了路径,现在它可以工作了。

相关内容