Jika saya memeriksa shell bash saya di OS X (10.6.4) terminal, seperti dengan mengetik echo $0
, ada sejumput di depan shell saya, seperti ini: -bash
. Apa arti tanda hubung ini?
Jika saya memeriksa shell bash saya di OS X (10.6.4) terminal, seperti dengan mengetik echo $0
, ada sejumput di depan shell saya, seperti ini: -bash
. Apa arti tanda hubung ini?
Jawaban:
Itu berarti bash
dipanggil sebagai shell login.
man bash
mengatakan:
Shell login adalah karakter yang argumen pertama nol adalah a
-
, atau yang dimulai dengan--login
opsi.Ketika bash dipanggil sebagai shell login interaktif, atau sebagai shell non-interaktif dengan
--login
opsi, bash pertama kali membaca dan mengeksekusi perintah dari file/etc/profile
, jika file itu ada. Setelah membaca file itu, tampaknya untuk~/.bash_profile
,~/.bash_login
dan~/.profile
, agar, dan membaca dan mengeksekusi perintah dari yang pertama yang ada dan dapat dibaca. The--noprofile
pilihan mungkin digunakan ketika shell dimulai untuk menghambat perilaku ini.Ketika shell login keluar, bash membaca dan mengeksekusi perintah dari file
~/.bash_logout
, jika ada.
Anda akan menemukan login -pf
dalam ps
output Anda , yang memulai shell login secara default.
Coba jalankan login -pf
dan login -pfl
lihat perbedaannya. man login
menjelaskan perbedaannya:
-l
Memberitahu program yang dieksekusi dengan login bahwa ini bukan sesi login (dengan konvensi, sesi login ditandai ke program dengan tanda hubung sebagai karakter pertamaargv[0]
; opsi ini menonaktifkan itu), dan mencegahnya masukchdir(2)
ke direktori home pengguna . Standarnya adalah menambahkan tanda hubung (ini adalah sesi login).
echo $0
: jika saya mengetik echo $0
di terminal yang dipanggil oleh ctrl + alt + f1
, hasilnya adalah -bash
; tetapi jika saya mengetiknya dalam termianl dipanggil oleh ctrl + alt + t
, hasilnya adalah bash
(tidak ada tanda hubung utama). Bisakah Anda menjelaskan mengapa?
--login
argumen, itu tidak berubah argv[0]
, tetapi bertindak sebagai shell login.
man
kutip