Apa yang .bashrc sebenarnya?

13

Ketika saya memasukkan misalnya. alias baru ke .bashrcfile saya, saya tidak bisa menggunakannya di jendela terminal segera dan sampai saat ini saya pikir saya harus me-restart terminal untuk memuat ulang .bashrcfile. Kemudian saya menemukan suatu tempat jika saya menulis

. .bashrc

ini akan memuat ulang .bashrcfile di jendela saat ini dan saya tidak perlu memulai ulang. Ini berfungsi sirip tetapi apa yang sebenarnya terjadi? Mengapa ini memuat ulang .bashrcfile?

Sekop
sumber
1
Dengan ., Anda "sumber" file. Berarti itu dieksekusi pada dasarnya
Der Hochstapler
kemungkinan rangkap dari apa yang dilakukan sumber?
Dan D.
1
@DanD. sementara jawabannya sama, pertanyaan itu terdengar sangat berbeda bagi saya.
Calimo
1
@Dan D. pertanyaan ini lebih lanjut tentang mening . . Sampai sekarang saya selalu memikirkan . sebagai singkatan untuk direktori saat ini dan .. sebagai singkatan untuk direktori induk. Saya tidak pernah sadar . adalah alias untuk sumber (yang pada gilirannya adalah konsep yang sama sekali baru bagi saya). Jika seseorang datang ke sini dan ingin tahu perbedaan yang saya temukan. Apa perbedaan antara mengeksekusi skrip bash dan sumber skrip bash? menjadi sangat membantu.
Spade

Jawaban:

17

Karena itu .adalah perintah.

Ini adalah perintah built-in shell, yang membaca file bernama dan menjalankan perintah di dalamnya dalam proses shell saat ini.

Shell Bourne Again juga memiliki sourcesinonim untuk perintah ini. Tapi ini Bashism (yang diambil oleh Bourne Again dari C Shell). Meskipun itu adalah Bashisme bahwa shell Bourne Again berbagi dengan TENEX C Shell, Z Shell, dan lainnya (tetapi bukan shell Korn, note). Spesifikasi UNIX Tunggal hanya membakukan ..

Juga perhatikan bahwa perilaku ./ sourceperubahan halus tergantung dari apakah shell Bourne Again dijalankan dalam mode yang kompatibel dengan POSIX atau tidak. (Sekali lagi ini seperti shell lain, meskipun perilaku non-standar mereka tidak sama dengan yang lain. Dengan Z Shell, misalnya, ada mekanisme skrip shell yang dikompilasi, dan sourcesedikit berbeda dari .dalam penanganan jalur pencariannya. The Korn shell .akan menjalankan fungsi shell, untuk contoh lain.)

~/.bashrchanyalah salah satu dari beberapa file yang isinya (tergantung dari bagaimana proses shell dipanggil) secara otomatis bersumber pada startup shell. Tidak ada yang melarangnya untuk dipasok secara manual . Meskipun jika tindakannya tidak idempoten, Anda mungkin memiliki beberapa pekerjaan perbaikan yang harus dilakukan setelahnya.

Bacaan lebih lanjut

JdeBP
sumber
1

help . akan memberi tahu Anda:

.: . filename [arguments]

Execute commands from a file in the current shell.

Read and execute commands from FILENAME in the current shell.  The
entries in $PATH are used to find the directory containing FILENAME.
If any ARGUMENTS are supplied, they become the positional parameters
when FILENAME is executed.

Exit Status:
Returns the status of the last command executed in FILENAME; fails if
FILENAME cannot be read.

Mengatakan . .bashrcmengeksekusi (sumber) file .bashrcyang membuat perubahan yang dibuat untuk file tersedia di sesi saat ini.

Secara default, ~/.bashrcakan dibaca saat login.

.adalah sinonim untuk source.

devnull
sumber
1

The .Perintah adalah hal yang sama seperti sourceperintah, yang mengeksekusi Anda .bashrcberkas. Ini menambahkan semua alias yang telah Anda tetapkan dan pengaturan / variabel shell lainnya ke lingkungan saat ini. Dari sourcehalaman bantuan:

source: source filename [arguments]
    Execute commands from a file in the current shell.
ethanwu10
sumber