bash file_name 和 ./file_name 之间的区别

问题描述 投票:0回答:1

我在脚本中使用 li.sh 创建了一个文件

#!/bin/env bash

read -p 'What is your name' name
echo $name

当我尝试使用命令

./li.sh
执行时,我收到了权限被拒绝的错误,但是当我使用命令
bash li.sh
执行时,它执行时没有任何错误。使用
bash li.sh
运行是否安全?

我想知道 ./li.sh 和 bash li.sh 之间的区别。

windows-subsystem-for-linux
1个回答
0
投票

我认为你无法通过./li.sh运行shell脚本的原因是你没有将文件权限设置为可执行

你可以看看这个 https://www.redhat.com/en/blog/linux-file-permissions-explained

tldr;您可以运行 sudo chmod +x li.sh 然后继续继续 ./li.sh

假设当您运行 bash li.sh 和 ./li.sh 时位于同一目录中,它应该以相同的方式工作。当您指定 bash li.sh 时,它首先运行 bash 并执行该文件,而当您运行 ./li.sh 时,它会读取该文件,看到有 #!符号 ,它将运行 /bin/env bash ,然后它将继续脚本

© www.soinside.com 2019 - 2024. All rights reserved.