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 bashdipanggil sebagai shell login.
man bash mengatakan:
Shell login adalah karakter yang argumen pertama nol adalah a
-, atau yang dimulai dengan--loginopsi.Ketika bash dipanggil sebagai shell login interaktif, atau sebagai shell non-interaktif dengan
--loginopsi, bash pertama kali membaca dan mengeksekusi perintah dari file/etc/profile, jika file itu ada. Setelah membaca file itu, tampaknya untuk~/.bash_profile,~/.bash_logindan~/.profile, agar, dan membaca dan mengeksekusi perintah dari yang pertama yang ada dan dapat dibaca. The--noprofilepilihan 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 -pfdalam psoutput Anda , yang memulai shell login secara default.
Coba jalankan login -pfdan login -pfllihat perbedaannya. man loginmenjelaskan perbedaannya:
-lMemberitahu 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 $0di 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?
--loginargumen, itu tidak berubah argv[0], tetapi bertindak sebagai shell login.
mankutip