Linux

Ubuntu - “sudo iptables”命令在終端中有效,在 bash 腳本中無效

  • March 31, 2019

我正在使用一個簡單的終端命令,它向 iptables 添加規則並且它執行沒有問題:

sudo iptables -A OUTPUT -p tcp -m string --string "facebook.com" --algo kmp -j REJECT

當我在 bash 腳本中執行該命令時,它會返回sudo: ./script.sh: command not found

腳本如下所示:

#!/bin/bash

sudo iptables -A OUTPUT -p tcp -m string --string "facebook.com" --algo kmp -j REJECT

如果腳本不可執行,則必須使用適當的 shell 呼叫它,例如/bin/shor /bin/bash。這將忽略 shebang 行,腳本將與呼叫 shell 一起執行。

sudo /bin/sh ./script.sh

要按照 OP 的要求執行腳本,您必須授予腳本執行權限。

chmod +x script.sh
sudo ./script.sh

在這種情況下,腳本使用 shebang 行的 shell 執行。

引用自:https://unix.stackexchange.com/questions/509721