Linux
Ubuntu - “sudo iptables”命令在終端中有效,在 bash 腳本中無效
我正在使用一個簡單的終端命令,它向 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/sh
or/bin/bash
。這將忽略 shebang 行,腳本將與呼叫 shell 一起執行。sudo /bin/sh ./script.sh
要按照 OP 的要求執行腳本,您必須授予腳本執行權限。
chmod +x script.sh sudo ./script.sh
在這種情況下,腳本使用 shebang 行的 shell 執行。