我在Ubuntu中有一个文件不适用于source
,我不知道发生了什么。
$ cat .broken_file
export D='222'
$ cat .working_file_1
export D='88'
$ D=5
$ echo $D
5
$ source .working_file_1
$ echo $D
88
$ source .broken_file
$ ## What is happening here? It should be 222
$ echo $D
88
现在,这两个文件具有相同的权限:
$ ll .working_file_1 .broken_file
-rw-rw-r-- 1 my_user my_user
-rw-rw-r-- 1 my_user my_user
此外,如果我复制损坏的文件,新文件就可以工作了:
$ cp .broken_file .broken_file_copy
$ source .broken_file_copy
$ echo $D
222
所以它也不是文件的内容。
我可以修改我的.broken_file(更改变量和值的名称),但它仍然失败。
$ echo $SHELL
/bin/bash
$ echo $BASH_VERSION
5.1.16(1)-release
$ uname -srv
Linux 6.2.0-26-generic #26~22.04.1-Ubuntu SMP PREEMPT_DYNAMIC Thu Jul 13 16:27:29 UTC 2
知道这是什么吗
更新:type
返回了一些奇怪的信息(我不知道如何解释):
$ type .broken_file
.broken_file is DIFFERENT_FOLDER/.broken_file
$ type .broken_file_copy
bash: type: .broken_file_copy: not found
1条答案
按热度按时间3pmvbmvn1#
您的
PATH
中是否有同名文件?来自source
上的Bash docs的信息:如果 filename 不包含斜杠,则
PATH
变量用于查找 filename,但 filename 不需要是可执行的。当Bash不处于POSIX模式时,如果在$PATH
中找不到 filename,则搜索当前目录。试着和
这可能会起作用: