Funktion funktioniert von der Kommandozeile, aber nicht vom Skript aus


0

Ich habe eine Shell-Skriptdatei, die einen Ruby-Dev-Server startet und den Titel des Fensters festlegt. Aus irgendeinem Grund funktioniert es nicht unter OS X, aber unter Ubuntu.

Hier ist mein Drehbuch:

[10:24:48] [user@mac site_web]$ tail ./sdev.sh
#!/bin/bash
title "dev server port 3000"
RAILS_ENV=development rails s -p 3000 --debugger

Läuft problemlos über die Befehlszeile, schlägt jedoch innerhalb des Skripts fehl.

[10:18:17] [user@mac site_web]$ title "dev server" 
title changed
[10:18:29] [user@mac site_web]$ ./sdev.sh
./sdev.sh: line 2: title: command not found 

Diese letzte Zeile ist das Problem.

Und meine Titelfunktion (in meinem ~ / .bash_profile):

# function for setting terminal titles in OSX
function title {
  printf "\033]0;%s\007" "$1"
  echo "title changed" 
}

Muss ich das anders machen, weil es unter OSX läuft?

Bearbeiten: Ich habe versucht, die Titelfunktion zu /Users/[me[/.bashrc hinzuzufügen, und es wird immer noch der Fehler angezeigt.


Versuchen Sie .bashrcstattdessen , die Funktion in Ihren
— slhck

@slhck wie ich es verstehe, das gibt es nicht auf Mac
— OS

@slhck sieht so aus, als wäre das falsch; fügte die Funktion zu .bashrc hinzu und ich erhalte immer noch den Fehler
— jcollum

Nun, es gibt es nicht standardmäßig, aber es wird von Bash gelesen, wenn es aufgerufen wird. Siehe joshstaiger.org/archives/2005/07/bash_profile_vs.html - in Ihrem Fall sollten Sie jedoch wahrscheinlich source ~/.bash_profile(oder ~/.bashrc) aus Ihrem Skript. Ich glaube, dass hier etwas fehlt, aber die Beschaffung der Konfigurationsdatei sollte die Funktion verfügbar machen.
— Slhck

@slhck Ich habe versucht, dass nur ein paar Minuten, bevor Sie kommentierten if [ -f ~/.bashrc] etc.., es nichts geändert
— jcollum

Antworten:


1

Ich habe keinen Mac, um dies zu versuchen, aber was ist, wenn Sie einen Verweis auf die Funktionsquelle in Ihr Skript aufgenommen haben?

#!/bin/bash
. $HOME/.bash_profile
title "dev server port 3000"
RAILS_ENV=development rails s -p 3000 --debugger

http://ubuntuforums.org/showthread.php?t=664657


Das scheint es behoben zu haben. Aber ich habe meinem ~ / .bashrc die Titelfunktion hinzugefügt, und die Titelfunktion war noch nicht verfügbar, bevor ich Ihr Update ausprobiert habe. Gibt es eine bashrc-Datei auf einem Mac an einer anderen Stelle im System?
— jcollum
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.