除非使用“ sh scriptname”调用,否则将运行旧版本的脚本

时间:2019-08-29 18:59:05

标签: bash shell

我正在对Shell脚本进行小的编辑,以掩盖密码输入,如下所示:

#!/bin/bash
printf "Enter login and press [ENTER]\n"
read user

printf "Enter password and press [ENTER]\n"
read -s -p pass

read -s -p pass作为更新的部分。出于某些原因,通过在命令行中输入script.sh正常运行时看不到更改,但是运行sh script.sh时却可以看到更改。我尝试打开新的终端窗口,并在ITerm和默认的Mac终端中运行它。我离脚本编写大师还很远,有人知道为什么没有前缀就看不到更改吗?

1 个答案:

答案 0 :(得分:2)

使用脚本的完整或相对路径来确保您正在运行自己认为正在运行的内容。

如果您仅以script.sh的身份运行它,那么外壳将通过PATH环境变量查找来定位它。要查看在这种情况下将使用哪种script.sh bash,请运行type script.sh

相对路径

./script.sh

完整路径

/path/to/my/script.sh