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- ...
~
在tilde expansion期间被展开。然后将波浪号~
替换为用户变量HOME
的内容。