Oxygene Δημοσ. 13 Σεπτεμβρίου 2014 Δημοσ. 13 Σεπτεμβρίου 2014 Προσπαθώ να γράψω ένα script μέσα στο οποίο οι εντολές θέλω από ένα σημείο και μετά να τρέχουν σε fakeroot environment. Αν γράψω #!/bin/bash fakeroot command1 command2 ... commandN (Όπου command1, command2...commandN οι εντολές που θέλω να τρέξω σε fakeroot environment) τότε τρέχει fakeroot και δεν συνεχίζει στις υπόλοιπες εντολές αν δεν κάνω πρώτα ένα exit και φυσικά οι εντολές εκτελούνται εκτός fakeroot environment. Σαν μια πρόχειρη λύση θα μπορούσα να "κοτσάρω" ένα fakeroot μπροστά από την κάθε εντολή, αλλά είναι πάρα πολλές και δεν είμαι και σίγουρος αν θά 'κανε σωστή δουλειά. Κάτι πιο απλό υπάρχει;
Artemis Fowl Δημοσ. 13 Σεπτεμβρίου 2014 Δημοσ. 13 Σεπτεμβρίου 2014 #!/bin/bash fakeroot /bin/bash command1 command2 ... commandN exit #exit fakeroot environment
Oxygene Δημοσ. 13 Σεπτεμβρίου 2014 Μέλος Δημοσ. 13 Σεπτεμβρίου 2014 #!/bin/bash fakeroot /bin/bash command1 command2 ... commandN exit #exit fakeroot environment Έχει την ίδια συμπεριφορά με αυτό που έγραψα πιο πάνω
Artemis Fowl Δημοσ. 13 Σεπτεμβρίου 2014 Δημοσ. 13 Σεπτεμβρίου 2014 Έχεις δίκιο, το /bin/bash μετά το fakeroot δεν είναι απαραίτητο. Δοκίμασε αυτό: #!/bin/bash fakeroot << EOF command1 command2 ... commandN EOF Αν ενδιαφέρεσαι να μάθεις πως/γιατί λειτουργεί, googlαρε για "shell here tag".
Oxygene Δημοσ. 13 Σεπτεμβρίου 2014 Μέλος Δημοσ. 13 Σεπτεμβρίου 2014 Το δοκίμασα, αλλά όλες οι εντολές μετά την γραμμή fakeroot /bin/bash << EOF πετάνε λάθος και επιπλέον χαλάνε τα χρώματα στο kwrite από εκείνο το σημείο και μετά (σαν να μου λέει υπάρχει λάθος στην σύνταξη) Το ίδιο και με σκέτο fakeroot << EOF
Artemis Fowl Δημοσ. 13 Σεπτεμβρίου 2014 Δημοσ. 13 Σεπτεμβρίου 2014 Μετά τις εντολές έβαλες το συμπληρωματικό EOF? Σε κενή γραμμή χωρίς leading/trailing whitespace.
Artemis Fowl Δημοσ. 13 Σεπτεμβρίου 2014 Δημοσ. 13 Σεπτεμβρίου 2014 Πόσταρε το κομμάτι του script και το σχετικό output. Ένα ενδεικτικό script: #!/bin/bash whoami fakeroot /bin/bash << EOF whoami touch test ls -l test EOF whoami ls -l test Το output του: $ ./test.sh user root -rw-r--r-- 1 root root 0 Sep 13 21:17 test user -rw-r--r-- 1 user users 0 Sep 13 21:17 test $
Oxygene Δημοσ. 13 Σεπτεμβρίου 2014 Μέλος Δημοσ. 13 Σεπτεμβρίου 2014 Το script είναι τεράστιο. Ενδεικτικό output: ls: cannot access *: No such file or directory grep: control: No such file or directory grep: control: No such file or directory Usage: grep [OPTION]... PATTERN [FILE]... Try 'grep --help' for more information. grep: control: No such file or directory grep: control: No such file or directory grep: control: No such file or directory grep: control: No such file or directory Usage: grep [OPTION]... PATTERN [FILE]... Try 'grep --help' for more information. grep: control: No such file or directory grep: control: No such file or directory grep: control: No such file or directory grep: control: No such file or directory grep: control: No such file or directory Usage: grep [OPTION]... PATTERN [FILE]... Try 'grep --help' for more information. Usage: grep [OPTION]... PATTERN [FILE]... Try 'grep --help' for more information. Usage: grep [OPTION]... PATTERN [FILE]... Try 'grep --help' for more information. grep: control: No such file or directory grep: control: No such file or directory grep: control: No such file or directory grep: control: No such file or directory grep: control: No such file or directory grep: control: No such file or directory grep: control: No such file or directory expr: non-integer argument
Artemis Fowl Δημοσ. 13 Σεπτεμβρίου 2014 Δημοσ. 13 Σεπτεμβρίου 2014 Δες το ενδεικτικό script που παρέθεσα παραπάνω και αν δε βγάζεις άκρη πόσταρε το κομμάτι του script σου μεταξύ των EOF.
Oxygene Δημοσ. 13 Σεπτεμβρίου 2014 Μέλος Δημοσ. 13 Σεπτεμβρίου 2014 (επεξεργασμένο) Αφαιρέθηκε link Πάει η έκπληξη Επεξ/σία 14 Σεπτεμβρίου 2014 από Oxygene
Artemis Fowl Δημοσ. 13 Σεπτεμβρίου 2014 Δημοσ. 13 Σεπτεμβρίου 2014 Μήπως να περιόριζες τη χρήση του fakeroot? Σε ~3000 γραμμές κώδικα νομίζω είναι επόμενο κάποιες να μην παίζουν σωστά όταν τις κοροϊδεύεις ότι είσαι root. Άντε να κάνεις debug εδώ...
Oxygene Δημοσ. 13 Σεπτεμβρίου 2014 Μέλος Δημοσ. 13 Σεπτεμβρίου 2014 Ναι αλλά όλες οι εντολές τρέχουν σε ένα συγκεκριμένο φάκελο που μπορεί να είναι μέσα στο home οποιουδήποτε χρήστη Το θέμα είναι ότι χωρίς τις γραμμές fakeroot << EOF και EOF το script (το οποίο είναι ανολοκλήρωτο) τρέχει χωρίς errors
Artemis Fowl Δημοσ. 13 Σεπτεμβρίου 2014 Δημοσ. 13 Σεπτεμβρίου 2014 Για ποιο λόγο χρειάζεσαι fakeroot στην τελική; Για τα archives; Κάνε όλες τις δουλειές σου σαν απλός χρήστης και άλλαξε σε fakeroot μόνο όταν χρειάζεται (i.e. όταν φτιάχνεις τα archives).
Oxygene Δημοσ. 13 Σεπτεμβρίου 2014 Μέλος Δημοσ. 13 Σεπτεμβρίου 2014 Ναι αλλά θέλω τα αρχεία που θα μπουν στο archive να έχουν owner και group root
Προτεινόμενες αναρτήσεις
Δημιουργήστε ένα λογαριασμό ή συνδεθείτε για να σχολιάσετε
Πρέπει να είστε μέλος για να αφήσετε σχόλιο
Δημιουργία λογαριασμού
Εγγραφείτε με νέο λογαριασμό στην κοινότητα μας. Είναι πανεύκολο!
Δημιουργία νέου λογαριασμούΣύνδεση
Έχετε ήδη λογαριασμό; Συνδεθείτε εδώ.
Συνδεθείτε τώρα