$ bl 1
$ sh -c 'bl 1'
sh: bl: command not found
bl
脚本位于用户的PATH扩展名(/home/user/.local/bin
)中,但是sh
似乎并没有意识到bash
环境。主要的/usr/bin/sh
可执行符号链接到/usr/bin/bash
。
在/usr/local/bin
中放置指向本地bl
脚本的符号链接似乎可以解决此问题。手动扩展PATH $ PATH=/usr/bin:$HOME/.local/bin sh -c 'bl 1'
也可以解决该问题,由于bash和sh都知道PATH,我对此并不了解。
$ export -p |grep PATH=
declare -x PATH="/usr/local/sbin:/usr/local/bin:/usr/bin:~/.local/bin"
$ sh -c 'export -p |grep PATH'
export PATH="/usr/local/sbin:/usr/local/bin:/usr/bin:~/.local/bin"
“缺少某些东西,您必须找到它”,但是如果您不知道缺少什么,很难看清。
答案 0 :(得分:3)
$ export -p |grep PATH declare -x PATH="/usr/local/sbin:/usr/local/bin:/usr/bin:~/.local/bin"
具有文字~
是错误的。它应该已经扩展到/home/user
。当变量被分配时,外壳将展开~
,但当它们被扩展时,外壳将不会膨胀。
$ foo=~ && echo $foo # expanded at assignment
/home/user
$ foo='~' && echo $foo # not expanded since the assignment is quoted
~
找到将~/.local/bin
添加到$PATH
的{{3}},并确保未引用~
。
错误:
PATH="$PATH:~/.local/bin"
右:
PATH=$PATH:~/.local/bin