2015-09-29 46 views
0

當我在工作時,我需要經常更改目錄。所以,我寫了一個這樣的小代碼,但它不起作用。使用TK更改終端運行目錄

#!/usr/bin/wish 
button .exit -text exit -command {exit} 
pack .exit -padx 20 -pady 10 

button .dir1 -text e1_b_r1_IcPlace -command {exec cd ..} 
pack .dir1 -padx 20 -pady 10 

顯示錯誤上面的代碼:

couldn't execute "cd": no such file or directory

+2

'cd' * *是一個命令,你不前,不需要任何'exec'。 –

+1

你不能做你想做的事:一個子進程不能改變父進程的環境。 'cd'命令內置在shell中,並且你的希望程序不能改變產生它的shell。如果你編寫一個結合Tk和Expect的Tcl程序,你可以產生一個shell並用GUI控制它。 –

回答

1

exec命令開始執行系統命令或運行腳本文件的新工藝。你不需要它來調用cd命令,只是命令本身:

button .dir1 -text e1_b_r1_IcPlace -command {cd ..} 

如果你想在創建按鈕你可以使用這樣的事情時指定一個目錄

button .dir1 -text e1_b_r1_IcPlace -command [list cd $dir] 

如果你想在該按鈕被調用時要指定的目錄,這是做這件事:

entry .dir1ent -textvariable dir 
button .dir1 -text e1_b_r1_IcPlace -command {cd $dir} 

大括號保持變量dir不被替換,直到調用該按鈕,此時調用cd,並將入口小部件的當前文本作爲參數進行調用。

更新:正如glenn jackman所說,這段代碼只會影響自己的進程,並且不能以這種形式作爲普通shell的「遠程控制」。但是,如果您使用tkcon作爲命令shell並從中啓動此代碼,則按鈕更改爲shell中的工作目錄。

文檔:buttoncdentryexeclist