Προς το περιεχόμενο

Πως τρέχω ένα bash script από αρχείο;


g1annis

Προτεινόμενες αναρτήσεις

Έχω ένα script σε Java για Equalizer ήχου στο Gnome.

To script τρέχει κανονικά αν δώσω στην κονσόλα

>java equalizer &

Για να φτιάξω μια καταχώρηση στο menu έφτιαξα ένα αρχειάκι που το ονόμασα menu_entry

 

Το αρχειάκι έχει το εξής περιεχόμενο

>! /bin/bash
java equalizer &

Όταν πατάω διπλό κλικ πάνω του μου εμφανίζει ένα παραθυράκι με τις επιλογές Run, Run in terminal, Display και Cancel

 

Αν πατήσω Run το σκριπτάκι τρέχει και όντως ανοίγει το equalizer και κάνω τη δουλειά μου.

 

Αν όμως προσθέσω στο Menu μια καταχώρηση και στο πεδίο command βάλω τη διεύθυνση του αρχείου menu_entry η καταχώρηση ΔΕΝ λειτουργεί. Παρομοίως κι αν το βάλω (drag/drop) στο gnome-panel. Γιατί;

 

Μπορείτε να με βοηθήσετε;

Συνδέστε για να σχολιάσετε
Κοινοποίηση σε άλλες σελίδες

πρεπει να ειναι #!/bin/bash
Όντως έτσι "πρέπει" να είναι, αλλά αυτό ΔΕΝ παίζει κανένα ρόλο αφού ούτως ή άλλως είναι #

 

πιό πολύ για συμπαράσταση
χαχαχα. Ευχαριστώ, αλλά ο τύπος είχε άσχετο πρόβλημα. Τουλάχιστον έτσι κατάλαβα.

 

Αν βρεθεί κανας καλοθελητής και βοηθήσει κομπλέ. Εγώ θα ψάχνω ούτως ή άλλως, και αν βρω λύση θα σας την ανακοινώσω.

 

off topic: αν και θα έπρεπε τόσο καιρό να έχει φτιαχτεί ένα απλό interface για Equalizer σε gtk! Καθόμαστε και τα κάνουμε με το χέρι ή με Java.

τς τς τς.

Συνδέστε για να σχολιάσετε
Κοινοποίηση σε άλλες σελίδες

Όντως έτσι "πρέπει" να είναι, αλλά αυτό ΔΕΝ παίζει κανένα ρόλο αφού ούτως ή άλλως είναι #

 

Όχι, δεν είναι έτσι. Ο χαρακτήρας # μπορεί να θεωρείται ως comment στα scripts (όχι μόνο bash, και αλλού) και να προκαλεί την αγνόηση όλων των υπόλοιπων περιεχόμενων της σειράς, αλλά η ακολουθία #! συγκεκριμένα έχει ειδική σημασία: Ονομάζεται shebang και πρέπει να ακολουθεί στην ίδια σειρά το πλήρες path+filename του προγράμματος το οποίο θα αναλάβει να εκτελέσει το συγκεκριμένο script. Δεν είναι απαραίτητα το bash ή κάποιο άλλο shell, σε ένα Perl script π.χ. θα μπαίνει εκεί το path για τον interpreter της Perl.

 

Δοκίμασε να τρέξεις τα παρακάτω scripts από κονσόλα για να το δεις και μόνος σου:

 

>#!/bin/bash
# test1.sh

echo Hello World!

 

>! /bin/bash
# test2.sh

echo Hello World!

 

Έξοδος στο Gnome terminal του Ubuntu 9.10:

 

>parsifal@vmubuntu32:/tmp$ ./test1.sh
Hello World!
parsifal@vmubuntu32:/tmp$ ./test2.sh
parsifal@vmubuntu32:/tmp$

 

 

Στην ίδια διανομή, δοκίμασα και τη ρύθμιση που έδειξα πιο πάνω στο screenshot, στα Properties ενός προσωρινού Gnome menu item που έτρεχε ένα δοκιμαστικό script. Αν στο Type του launcher δοθεί σκέτο "Application" αντί του "Application in Terminal", το script δεν εκτελείται.

Συνδέστε για να σχολιάσετε
Κοινοποίηση σε άλλες σελίδες

.......

February 3rd, 2007, 09:58 AM

If you give in a path you need to specify the class path for java, like this:java -cp /home/user/java/ /home/user/java/main Or you can write a script and cd to the right directory first.

LaneLester

February 3rd, 2007, 11:37 AM

Thanks, Ramses. I tried this script:

#!/bin/bash

cd /opt/GFP

java -jar gfd.jar

which works fine in the terminal, but not from the menu.

 

I just tried this for jedit in the menu and it didn't work (I probably have the syntax wrong... there is no main folder):

java -cp /usr/lib/jvm/java-6-sun-1.6.0.00/ /usr/lib/jvm/java-6-sun-1.6.0.00/bin -jar /usr/share/jEdit/jedit.jar

 

Gnome gives the error: Failed to execute child process "java" (no such file or directory)

 

Lane

...

 

February 4th, 2007, 08:00 AM

I think what's meant is to register your Java version system-wide by running - sudo update-alternatives --config java and choosing your default Java version (you'll likely have only one).

Actually, I see that I have three by using that command:

Selection Alternative

-----------------------------------------------

1 /usr/bin/gij-wrapper-4.1

2 /usr/lib/jvm/java-1.5.0-sun/jre/bin/java

+ 3 /usr/lib/jvm/java-6-sun/jre/bin/java

 

The command said:

Press enter to keep the default , or type selection number:

 

Since a "+" isn't a "*," I entered "3," and the problem was solved! Both jedit and gfp now work by having simply "jedit" or "gfp" in the menu field.

 

Thanks to everyone who responded to my plea for help.

 

Lane

 

συγγνώμη γιάννη

μου φάνηκαν παρόμοια γι' αυτό

.

Συνδέστε για να σχολιάσετε
Κοινοποίηση σε άλλες σελίδες

Πώς δημιουργώ ένα script που βγάζει ένα μήνυμα στην οθόνη (π.χ. "Είσαι εδώ;") σε ένα μικρό παραθυράκι και πάνω απ' όλα τα ανοιχτά παράθυρα σε μή τακτά χρονικά διαστήματα που όμως δεν θα είναι μικρότερα των 5 λεπτών ούτε μεγαλύτερα των 35 λεπτών ανάμεσα στο προηγούμενο και στο επόμενο μήνυμα;

 

Λίγο ζόρι μου φαίνεται να γίνεται αυτό .

 

Ευχαριστώ προκαταβολικά.

Συνδέστε για να σχολιάσετε
Κοινοποίηση σε άλλες σελίδες

Καθόλου ζόρι:

 

>
#!/bin/bash

while [ 1 ]
do
   WAIT_SEC=$RANDOM
   let "WAIT_SEC %= 1800"
   let "WAIT_SEC += 300"
   sleep $WAIT_SEC

   zenity --question --text="Είσαι εδώ;"
done

 

Το μόνο «ζόρι» είναι ότι πρέπει να υπάρχει στο σύστημα που θα τρέξει το script προεγκατεστημένο το zenity που επιτρέπει από shell scripts να δημιουργείς διάφορα γραφικά GTK+ dialog boxes.

Συνδέστε για να σχολιάσετε
Κοινοποίηση σε άλλες σελίδες

Επίσης για έλεγχο στις ιδιότητες του παραθύρου (π.χ. να το υποχρεώσεις να γίνει "Active", "Sticky" ή "Ontop") μπορείς να χρησιμοποιήσεις και το wmctrl.

Συνδέστε για να σχολιάσετε
Κοινοποίηση σε άλλες σελίδες

Eυχαριστώ παίδες!

Μπορεί να μην φαίνεται και τόσο αλλά έχω βαρεθεί εντελώς τo qui

Και ψάχνομαι όλο και περισότερο για κονσολίτσα και scriptάκια..

Κάθε συμβουλή από γνώστες του αντικειμένου πάντα ευπρόσδεκτη.

Συνδέστε για να σχολιάσετε
Κοινοποίηση σε άλλες σελίδες

Αρχειοθετημένο

Αυτό το θέμα έχει αρχειοθετηθεί και είναι κλειστό για περαιτέρω απαντήσεις.

  • Δημιουργία νέου...