2011-12-31 76 views
8

如何用改變後的提示啓動bash子進程。使用env不起作用:改變提示開始bash過程PS1

env PS1="change >" bash --login 

不起作用。結果應該是一樣的進程啓動後使用導出:

$ export PS1="change >" 
change > 

~/.bashrc必須進行評估和往常一樣。

回答

7

另一個解決方案是:

bash --rcfile <(cat ~/.bashrc; echo 'PS1="change > "') 

這通過執行和用戶的「擴展」版本startupfile保持別名和合作。

5

該行爲是正常的:與--login,bash將讀取您的初始化文件,並重新定義PS1

你可以試試:

(source .bashrc; env PS1="change >" bash --norc) 

這個工作對我來說:

[email protected] ~ $ grep FOO ~/.bashrc 
export FOO=bar 
[email protected] ~ $ (source ~/.bashrc; env PS1="change> " bash --norc) 
change> echo $FOO 
bar 

但它只能因爲.bashrc中沒有來源,重新定義PS1的任何文件。

+0

應該已經添加到fineprint。我必須運行.bashrc。 – 2011-12-31 12:08:42

+0

你可以粘貼它嗎?如果它來源重新定義PS1的文件,你幾乎註定了... – fge 2011-12-31 12:11:05

+0

查看編輯的解決方案 – fge 2011-12-31 12:17:53

2

嘗試bash --rcfile <(echo "export PS1='somethingelse>'")。這使用進程替換來創建一個包含PS1設置的「文件」並將其提供給bash。你當前的shell應該支持這種替換(bash和zsh)。

+0

謝謝。這是我的門票。 我在.bashrc,.profile和其他被幹擾的腳本中有很多東西。 – CSkau 2012-02-29 12:46:54