我使用screen
在Linux機器上,而我試圖寫它在完成後自動關閉一個新的,獨立的屏幕會話中運行一個bash功能的(相當便攜)功能。我已經取得了一些成功,但我注意到以下行爲:發送猛砸別名來分離屏幕會話
如果我包括我的~/.bashrc
文件中的mail_submit()
定義,我可以運行
mail_submit foo
在終端
,而且我可以訪問別名在一個新的屏幕會話:
screen -S test
mail_submit foo
然而,下面的命令不起作用:
screen -d -m -S test sh -c 'mail_submit foo'
可能是因爲sh -c
啓動了一個不知道我的~/.bashrc
配置文件的新殼。所以,我可以使用下面的解決辦法:
screen -d -m -S test sh -c 'source ~/.bashrc; mail_submit foo'
這做工作。
但是,如果我想換這個功能成一個bash別名(這是我在這裏的最終目標),這將導致一個奇怪的自我指涉的情況。
問題:什麼是讓sh -c知道我的~/.bashrc
配置文件位置的簡單方法,或者使用源文件和創建別名的變體?
編輯:我救不了shell腳本在我的主目錄,並創建運行
screen -d -m -S test bash -c '~/mail_submit.sh $1'
的別名,但我還是會好奇地聽到其他可能的修復。
好抓;不幸的是這個問題依然存在,並且當我明確地給出'〜/ .bashrc'時也是如此。 – chriswhite
嘗試使用'defshell -bash'設置〜/ .screenrc文件,這使得bash作爲登錄shell運行,它將調用〜./。bashrc文件,因爲默認情況下,屏幕不會運行bash作爲登錄shell(讀取.bashrc文件時)。有關更多信息,請參閱此帖子:https://bbs.archlinux.org/viewtopic.php?id = 82519 – Incognito