2016-08-16 72 views
0

我想在登錄時使zsh加載~/.profile。我發現這zsh-not-hitting-profile`[[-e〜/ .profile]]`在zsh shell中的含義是什麼?

吉爾斯的回答加emulate sh -c '. ~/.profile'~/.zprofle 確實有效。

但我不知道爲什麼弗蘭克Terbeck作出除了它:

[[ -e ~/.profile ]] && emulate sh -c 'source ~/.profile'

我不是很熟悉Linux外殼,所以我不明白他說的話:

而且它只在來源期間有效。因此,您無需保存當前的選項狀態,以便在採購後重新播放。

  1. 只在源期間有效嗎?我需要~/.profile總是需要來源,我無法得到的意思,因爲emulate sh -c 'source ~/.profile只需每次登錄我的作品。
  2. 保存當前選項狀態以重播?什麼是選項狀態,爲什麼我需要重放?

回答

1

[[ -e ~/.profile ]]只是測試文件~/.profile是否存在。這樣,如果文件不存在,您將不會在執行source ~/.profile時發生錯誤。 「

」只在源期間有效「意味着您給emulate命令的-c選項不會將選項更改爲原始shell進程。它只是在模擬source命令期間暫時使用它。

+0

謝謝,通過搜索'bash檢查文件存在'我明白'-e〜/ .profile'的用法,和http://stackoverflow.com/questions/13542832/what-is-the-difference-between-single-和雙方括號在bash中告訴我什麼是雙方括號的意思。 – Mithril

+0

原始的Bourne shell有一個非常有限的外部工具,叫做'''''''''測試';後續的shell(主要)選擇了類似的「語法看起來」但不同的構造來引入新的內置功能,以保持向後兼容性,但引入新行爲。 – tripleee

+0

@tripleee這是他所鏈接的問題所解釋的。 – Barmar

相關問題