Bash:添加路径后无法调用脚本

Li *_*nan 2 unix bash

我正在编写自己的 unix 脚本,因此我想为 Bash 添加一个新目录。我在 .bash_profile 中添加了这样的内容。

PATH="~/Documents:${PATH}"
export PATH
Run Code Online (Sandbox Code Playgroud)

在我的〜/ Documents中,有一个名为test的文件,其内容是

#!/usr/bin/env python3.5
print("hahahhah")
Run Code Online (Sandbox Code Playgroud)

我也用过

chmod 755 test
Run Code Online (Sandbox Code Playgroud)

使其可执行。

但我无法直接在终端中调用它。./test照常工作。什么地方出了错?

当我更改为

PATH="$HOME/Documents:${PATH}"
export PATH
Run Code Online (Sandbox Code Playgroud)

什么都没发生。

FDSM_lhn@9-53:~/Documents$ test
FDSM_lhn@9-53:~/Documents$ ./test
hahahhah
Run Code Online (Sandbox Code Playgroud)

解决方案:根本原因是我有一个与默认命令同名的命令,所以它无论如何都不起作用!改个名字就够了!

Eta*_*ner 6

波形符不会在字符串内部扩展。因此,通过引用赋值的右侧,您可以防止它被扩展并~PATH变量中获得一个对您没有任何帮助的文字。

您有两种方法可以解决此问题:

  1. 删除作业上的引号(是的,这是安全的,即使对于$PATH带有空格等的值也是如此)。

  2. 使用$HOME而不是~.

我更喜欢第二种解决方案,但第一种解决方案对于这种情况完全有效。

但请注意,在不进行直接分配的地方,您通常不能直接删除引号,尝试使用~ 导致问题。

在这种情况下,你最终会发现这样的问题这样的答案以及这样丑陋的东西。

  • 当然,用您自己的不相关程序隐藏系统命令“test”始终是一个坏主意。 (3认同)