我尝试了多种方法让它工作,但没有去:我只想在源命令中使用$ path。
#!/bin/bash
path="~/root/config/bash/"
source ~/root/config/bash/_private.sh
source ~/root/config/bash/config.sh
答案 0 :(得分:3)
Tilde(~
)在放入引号内的路径中将在字面上处理,在变量声明中,因此source $path
将不起作用。
你可以:
使用eval
(小心):
source "$(eval echo $path)"
或使用字母完整路径:
path=/home/user/root/config/bash/
或者,如果用户与登录用户相同,请使用$HOME
:
path="$HOME"/root/config/bash/
或者保持~
outside of quotes
答案 1 :(得分:2)
path=~/"root/config/bash/"
source "$path"
答案 2 :(得分:1)
在命令将它们视为参数之前,shell会扩展Bash参数。
source "$path"
就是你所需要的。
除非你正在谈论将它用作前缀,在这种情况下,你可以这样做:
source "${path}/_private.sh"
等
但是,如果您正在讨论使用$ path,就好像它是$ PATH一样,如果在其他地方找不到它们就让它查找文件,那就需要自定义逻辑。