Datei ausführbar machen

Antworten
Mathias
Beiträge: 6160
Registriert: Do 2. Jan 2014, 17:21
OS, Lazarus, FPC: Linux (die neusten Trunk)
CPU-Target: 64Bit
Wohnort: Schweiz

Datei ausführbar machen

Beitrag von Mathias »

Mit folgendem Code erzeige ich ein Bash-Script.
Wie kann ich es machen, das das Script das Attribut ausführbar bekommt ?

Code: Alles auswählen

procedure TForm1.Button1Click(Sender: TObject);
var
  sl: TStringList;
begin
  sl := TStringList.Create;
  sl.Add('#!/bin/bash');
  sl.Add('echo Mache irgendwas');
  sl.Add('read');
  sl.SaveToFile('test.sh');
  sl.Free;
end;
Zuletzt geändert von Mathias am Fr 6. Mai 2016, 21:00, insgesamt 1-mal geändert.
Mit Lazarus sehe ich grün
Mit Java und C/C++ sehe ich rot

MacWomble
Lazarusforum e. V.
Beiträge: 999
Registriert: Do 17. Apr 2008, 01:59
OS, Lazarus, FPC: Mint 21.1 Cinnamon / FPC 3.2.2/Lazarus 2.2.4
CPU-Target: Intel i7-10750 64Bit
Wohnort: Freiburg

Re: Datei ausführbar machen

Beitrag von MacWomble »

http://www.freepascal.org/docs-html/rtl ... chmod.html:

Code: Alles auswählen

Program Example23;
 
{ Program to demonstrate the Chmod function. }
 
Uses BaseUnix,Unix;
 
Var F : Text;
 
begin
  { Create a file }
  Assign (f,'testex21');
  Rewrite (F);
  Writeln (f,'#!/bin/sh');
  Writeln (f,'echo Some text for this file');
  Close (F);
  fpChmod ('testex21',&777);
  { File is now executable  }
  fpexecl ('./testex21',[]);
end.
Alle sagten, dass es unmöglich sei - bis einer kam und es einfach gemacht hat.

Mathias
Beiträge: 6160
Registriert: Do 2. Jan 2014, 17:21
OS, Lazarus, FPC: Linux (die neusten Trunk)
CPU-Target: 64Bit
Wohnort: Schweiz

Re: Datei ausführbar machen

Beitrag von Mathias »

Danke, so sieht es momentan gut aus.
Was heisst das &777 ?

Code: Alles auswählen

procedure TForm1.Button1Click(Sender: TObject);
const
  datei = 'test.sh';
var
  sl: TStringList;
begin
  sl := TStringList.Create;
  sl.Add('#!/bin/bash');
  sl.Add('echo Mache irgendwas');
  sl.Add('read');
  sl.SaveToFile(datei);
  sl.Free;
  fpChmod(datei, S_IRWXU or S_IRGRP or  S_IROTH);
end;
Mit Lazarus sehe ich grün
Mit Java und C/C++ sehe ich rot

jwdietrich
Beiträge: 167
Registriert: Mo 20. Okt 2008, 20:50
OS, Lazarus, FPC: macOS 10.4-13.4, Windows 2000-11, Raspbian (L 2.2.6, FPC 3.2.2)
CPU-Target: PowerPC, Intel, ARM
Wohnort: Hattingen, NRW
Kontaktdaten:

Re: Datei ausführbar machen

Beitrag von jwdietrich »

Mathias hat geschrieben:Was heisst das &777 ?

777 heißt, dass die Datei für Eigentümer, Gruppe und alle anderen les- (4), schreib- (2) und ausführbar (1) ist (4 + 2 + 1 = 7).

Details sind recht gut auf https://wiki.ubuntuusers.de/Rechte/#Darstellungsarten und auf https://developer.apple.com/legacy/library/documentation/Darwin/Reference/ManPages/man1/chmod.1.html beschrieben. Das erste Beispiel bezieht sich auf Linux (Ubuntu), das zweite auf Mac OS X, aber im Prinzip ist das das gleiche.

Mathias
Beiträge: 6160
Registriert: Do 2. Jan 2014, 17:21
OS, Lazarus, FPC: Linux (die neusten Trunk)
CPU-Target: 64Bit
Wohnort: Schweiz

Re: Datei ausführbar machen

Beitrag von Mathias »

Und was ist das & ?
Mit Lazarus sehe ich grün
Mit Java und C/C++ sehe ich rot

mse
Beiträge: 2013
Registriert: Do 16. Okt 2008, 10:22
OS, Lazarus, FPC: Linux,Windows,FreeBSD,(MSEide+MSEgui 4.6,git master FPC 3.0.4,fixes_3_0)
CPU-Target: x86,x64,ARM

Re: Datei ausführbar machen

Beitrag von mse »

Mathias hat geschrieben:Und was ist das & ?

Oktal.
http://www.freepascal.org/docs-html/cur ... 8-170001.6

Antworten