Kann ich chmod +x nicht ausführen?

Person Github

In Linux- und Unix-ähnlichen Systemen chmod +xwird der Befehl verwendet, um Dateien Ausführungsberechtigungen hinzuzufügen. Wenn Sie es nicht ausführen chmod +x, verfügt die Datei standardmäßig nicht über Ausführungsberechtigungen. Wenn es sich bei der Datei also um ein Skript (z. B. ein Bash-Skript) handelt, können Sie sie nicht direkt über ihren Pfad ausführen.

Aber auch ohne Ausführungsberechtigungen haben Sie noch andere Möglichkeiten, das Skript auszuführen:

  1. Direkt mit dem Interpreter ausführen :

    • Sie können Bash-Skripte auch ohne Ausführungsberechtigungen ausführen, indem Sie den Bash-Interpreter angeben:
      bash yourscript.sh
      
    • Dieser Befehl weist Bash an, das Skript direkt zu interpretieren und auszuführen yourscript.sh, unabhängig davon, ob es über Ausführungsberechtigungen verfügt.
  2. Verwenden Sie den Befehl sourceoder. :

    • sourceSie können den Befehl (oder seine Abkürzung ) verwenden ., um Befehle in einem Skript auszuführen:
      source yourscript.sh
      
    • oder:
      . yourscript.sh
      
    • Dadurch wird der Skriptbefehl in der aktuellen Shell ausgeführt, anstatt eine neue Shell zu erstellen.

Vorsichtsmaßnahmen

  • Wenn das Skript die Umgebung der aktuellen Shell ändern muss (z. B. das Festlegen von Umgebungsvariablen), ist die Ausführung des Skripts mit sourceoder .besser geeignet als die direkte Ausführung, da diese Änderungen in der aktuellen Shell wirksam werden.
  • Seien Sie vorsichtig, wenn die Sicherheit ein Problem darstellt (z. B. beim Ausführen eines aus dem Internet heruntergeladenen Skripts) chmod +x. Sie sollten die Ausführungserlaubnis nur erteilen, wenn Sie den Inhalt des Skripts vollständig verstehen.
  • Bei der tatsächlichen Arbeit werden Ausführungsberechtigungen normalerweise nur dann festgelegt, wenn das Skript häufig ausgeführt werden muss und die Ausführungsmethode so einfach sein muss wie ein normales Programm.

Guess you like

Origin blog.csdn.net/m0_57236802/article/details/135186340