Startup
為什麼 /etc/profile 檢查 PS1 而不是 $- 中的 -i 標誌
我知道有兩種方法可以測試 shell 是否是互動式的,
[[ $- == *i* ]] && echo "-i option flag indicates interactive" [ -n "$PS1" ] && echo "prompt is set"
我讀過檢查
i
選項標誌更可靠,這是有道理的,因為它是互動性的明確指標。但是,當我查看系統上的啟動文件(例如
/etc/profile
,/etc/bash.bashrc
)時,它們會檢查PS1
. 我正在執行 Ubuntu。我不知道這是特定於平台的。我想知道這是否意味著:
- 啟動文件的作者沒有我想像的那麼熟練
PS1
在這種情況下足夠可靠PS1
總的來說足夠可靠,我想太多了
在我的 Ubuntu 16.04 系統上,這是簽入
/etc/profile
:if [ "$PS1" ]; then if [ "$BASH" ] && [ "$BASH" != "/bin/sh" ]; then # The file bash.bashrc already sets the default PS1. # PS1='\h:\w\$ ' if [ -f /etc/bash.bashrc ]; then . /etc/bash.bashrc fi else if [ "`id -u`" -eq 0 ]; then PS1='# ' else PS1='$ ' fi fi fi
…在我看來,這主要關注設置
PS1
(而不是控制 rc 文件其餘部分的行為)。我看不出測試對這有-i
什麼幫助。