【发布时间】:2020-03-13 17:17:51
【问题描述】:
$ 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"
“有些东西丢失了,你必须找到它”,但如果你不知道丢失了什么,就很难看。
【问题讨论】:
-
您可以发布“PATH”和
whereis cp以便其他人了解您的设置吗? -
您的
PATH变量是否标记为导出?运行export -p | grep PATH=。 -
@dash-o @cbley Cp 位于
/usr/bin/cp。export -p |grep PATH的输出对于 bash 和 sh 是不同的; bash 输出:$ export -p |grep PATH declare -x PATH="/usr/local/sbin:/usr/local/bin:/usr/bin:~/.local/bin"和 sh 输出:export -p |grep PATH declare -x PATH="/usr/local/sbin:/usr/local/bin:/usr/bin:~/.local/bin"。 -
你的外壳是什么?是 'bash' 还是 'dash' 还是别的什么?
-
看起来不错(我想
/~/.local/bin部分只是一个错字?!)也许$HOME没有指向正确的位置?请运行sh -c 'echo $HOME'并将输出添加到您的问题中(在 cmets 中真的很难阅读)。您也可以尝试手动设置 PATH 并查看它是否有效:PATH=/usr/bin:$HOME/.local/bin sh -c 'bl 1'