2010-10-09 130 views
3

我嘗試構建一個小腳本來啓動我的開發環境。爲了這個任務,我嘗試打開一個帶有多個選項卡的gnome終端,其中自動啓動rails server和autotest。 但以編程方式打開gnome終端,並在bashrc執行後執行命令

gnome-terminal --tab -e "rails server" --tab --tab 

不起作用(「創建子進程時出錯」)。 也

 
gnome-terminal --tab -e "bash -c \"rails server\"" --tab --tab` 

不起作用。 任何建議如何解決這個問題?

回答

13

這裏是一個好的技巧,我們制定了在Superuser

  1. 添加eval "$BASH_POST_RC".bashrc

  2. 設置BASH_POST_RC環境變量的末尾爲每個選項卡,你想執行該命令,例如:gnome-terminal --working-directory="/home/zardoz/projects/my_rails_app" --tab -e 'bash -c "export BASH_POST_RC=\"rails server\"; exec bash"' --tab -e 'bash -c "export BASH_POST_RC=\"autotest\"; exec bash"'

@Gilles:Thanks f或解決方案!

+0

嘗試'-e'env BASH_POST_RC = \「rails server \」bash''獲取較短的版本。對第二個'--tab -e'參數做同樣的事情。 – 2014-10-10 16:03:04

+0

我有一個類似的問題,並嘗試了你的技術。有效。謝謝。我確實注意到,comnmand字符串不會被放入終端或歷史記錄中。有沒有辦法做到這一點? – Steve 2014-12-31 05:10:54

+0

我嘗試了幾分鐘的谷歌搜索。變量BASH_POST_RC是什麼意思? – Steve 2014-12-31 05:11:36

1

在黑暗中刺穿:爲每個要在選項卡中運行的命令創建shell腳本,使它們可執行並通過絕對路徑調用它們。把這個/home/zardoz/bin/railsstart

#! /bin/sh 
exec rails server 

chmod +x它,然後做

gnome-terminal --tab -e /home/zardoz/bin/railsstart --tab --tab ... 

如果不工作,接下來的事情我會嘗試是在命令的開始堅持strace -f -o /tmp/trace.log,讓它失敗,然後通過trace.log進行挖掘,找出哪個系統調用實際上失敗了,爲什麼(這裏會有大量的垃圾 - 從後面讀尾並尋找以E開頭的全部大寫的代碼短語,如「ENOEXEC」 ,「ENOENT」,「EPERM」等等。)

編輯:下面是你在所有的.bashrc設置怎麼拉這些腳本之一:

#! /bin/bash 
. ~/.bashrc 
exec rails server 

注意:您可能需要調整您的.bashrc所以它不會做某些事情,只有工作在「真正的」交互式shell會話中。不要擔心這種情況,除非在導軌啓動之前出現奇怪的錯誤。

+0

該方法與我的第二個gnome-terminal語句具有相同的缺陷。它真的試圖在該選項卡中運行「rails server」,但不能成功,因爲它找不到命令「rails」。該命令僅在執行前正確調用.bashrc時才存在。使用gnome-terminal -e執行命令時情況並非如此。 – Zardoz 2010-10-09 19:09:10

+0

嘗試讓包裝腳本運行你的'.bashrc',然後 - 參見編輯。 – zwol 2010-10-10 18:42:14

0

我假設出現錯誤是因爲在gnome-terminal嘗試運行rails時沒有設置PATH。

爲什麼不使用rails服務器的完整路徑,或者創建一個設置PATH變量的腳本?

+0

還有一些問題。我使用RVM來設置整個Ruby環境。並且RVM在.bashrc中設置。所以我必須確保gnome-terminal -e「command」首先執行.bashrc,然後執行命令。 – Zardoz 2010-10-10 10:14:22

+0

我不認爲我理解你的問題= /你可以讓gnome-terminal以指定的順序執行多個命令。可能將命令分開;將起作用,如果沒有,你可以使用-x來執行該行的其餘部分。我錯了嗎? – slezica 2010-10-10 22:58:45

0

已經回覆,但爲了以防萬一,請檢查this gem,以便在KDE,OSX和Gnome桌面上自動執行終端。

0

for Ubuntu 16。04

Ctr+Shift+T

這將在同一個窗口中打開一個新的標籤。此外,用於添加更多選項卡的按鈕將出現在最右邊的選項卡旁邊。