2012-01-14 141 views
3

我想用透明包裝器(使用記錄器)替換一些實用工具(如telnet)。 起初,我使用別名,在命令行上很好地工作,但gnome不理解shell別名,以便當人們將啓動公用程序作爲gnome-terminal配置文件的外殼程序時,它將運行實際的實用程序而不是包裝程序。如何將env變量傳遞給GNOME

然後我嘗試在〜/ .bashrc中添加符號鏈接的新文件夾並將其前置到PATH(安全性不是一個大問題加上它僅用於這些符號鏈接的特殊文件夾),但它們仍然運行原始(我猜測gnome不運行.bashrc,因爲它從命令行工作)。任何設定路徑需要去的想法?

+0

要重新加載'.bashrc',您必須註銷並重新登錄。 – 2012-01-14 13:47:55

+0

我已經登錄回 – 2012-01-16 09:41:41

回答

0

我發現了兩種方法來做到這一點,似乎像我想要的那樣工作(爲gnome env編寫腳本)。

首先把它放在$ {HOME} /。gnomerc中(但我發現有些地方說你應該手動執行GNOME會話,而其他的則不需要(它似乎沒有它就可以正常工作),我害怕把它在〜/ .profile文件的破登錄。)

似乎工作,所以我只是

echo 'PATH=~/.symlink_dir/:${PATH}' > ~/.profile 

(注意,這是bash的忽略,如果在〜/ .bash_profile存在,所以你可能需要手動來源於〜/ .bash_profile以防萬一

echo 'source ~/.profile' >> ~/.bash_profile)。

-1

如果你真的想在整個使用替代工具,您可以把符號鏈接到您的更換在/usr/bin/(或其它地方如適用)和移動原稿/usr/bin/originals/(或地方)。

如果你這樣做,你最好確保你的包裝是堅如磐石的。根據您要替換的內容,錯誤可能會阻止引導,這通常是不受歡迎的。

+0

我不會更改軟件包安裝的二進制文件,除非我更加絕望。有一件事,當你運行更新時會發生什麼? – 2012-01-17 04:47:02

1

也許update-alternatives符合你的需求?

+0

我認爲update-alternatives更適合管理已經由它管理的東西。如果你用一個符號鏈接替換一個包裝器(能夠通過update-alternatives切換到符號鏈接到真實的東西),當包系統想要用新的二進制文件更新時,會發生什麼?它會替換符號鏈接嗎? – 2012-01-22 08:25:36

+0

@ RomanA.Taycher我認爲如果更新系統沒有問題:例如在我的Ubuntu上:'/ usr/bin/telnet - >/etc/alternatives/telnet'和'/ etc/alternatives/telnet - >/USR /斌/ telnet.netkit'。所以當你更新默認的telnet包時,你實際上更新了'/ usr/bin/telnet.netkit',並且當你改變'alternatives'時,你編輯鏈接'/ etc/alternatives/telnet'。 – Lesque 2012-01-22 13:46:44

+0

它適用於Ubuntu。現在,如果我可以找到一些Fedora的東西。 – 2012-01-23 08:21:40

-1

它可能不是你要求的,但是你是否嘗試過從菜單編輯器改變啓動器的命令。

如果您使用的是Gnome 3,則需要下載alacarte軟件包。

+1

這。你爲什麼不創建一個包裝腳本,把它放在/home/you/bin/telnet-wrapper.sh中並添加一個啓動腳本的啓動器? – 2012-01-23 14:45:03

+0

我正在使用包裝腳本。關鍵是要爲GNOME設置PATH,這樣gnome-terminal配置文件就可以毫不費力地使用包裝器,而不需要另外運行安裝/升級腳本。 – 2012-03-01 04:49:02