用从文本文件中提取的目录列表扩展PATH,'〜'字符未扩展为HOME

问题描述 投票:0回答:1

PATH通过从文本文件中提取的目录列表进行扩展;

$ cat ~/.path
~/.local/bin
~/W-space/esp/esp-open-sdk/xtensa-lx106-elf/bin
~/W-space/research/recognition/voxforge/bin
~/W-space/research/recognition/voxforge/bin/julius-4.3.1/bin

像这样(可以在BASH的启动文件之一中找到以下内容:]]

declare -a BATH_ARRAY=($(cat ~/.path)) 2>/dev/null # extend path
for BATH in "${BATH_ARRAY[@]}"
do
case ":${PATH}:" in
  *:${BATH}:*) ;;
  *) PATH=${PATH}:$BATH && export PATH;;
esac
done

~/.path文件提取的PATH扩展条目数组的基本迭代。在~/.local/bin(位于PATH中)的内部,有一个我可以调用的bl脚本,如下所示:

$ ls -l ~/.local/bin/bl
-rwxr-xr-x 1 romeo romeo 6304 Nov 17 09:06 /home/romeo/.local/bin/bl*
$ bl 1 #no error!
$

然而,在'sh' environment does not respect the PATH extensions, user's local PATH not in effect?问题中简要讨论了一些不希望有的影响,其中包括如下症状:

$ bl 1
$ sh -c 'bl 1'
sh: bl: command not found
$
$ bl 1
$ whereis bl
bl:
$

一致认为,在扩展PATH之前,应将'〜'字符扩展到用户的HOME。如何实现它,同时又将外部文件保留为PATH扩展的目录源?当前方法的问题在哪里?帮助非常感谢:)

PATH通过从文本文件中提取的目录列表进行扩展; $ cat〜/ .path〜/ .local / bin〜/ W-space / esp / esp-open-sdk / xtensa-lx106-elf / bin〜/ W-space / research / recognition / voxforge / bin〜/ W- ...

bash path sh archlinux
1个回答
0
投票

~tilde expansion期间被展开。然后将波浪号~替换为用户变量HOME的内容。

© www.soinside.com 2019 - 2024. All rights reserved.