3
Takeaways Key
skrip /etc /profil, yang dibaca oleh semua cengkerang semasa log masuk, digunakan untuk menetapkan laluan $ dan $ ps1, dan sumber /etc/bash.bashrc.
Mari kita lihat beberapa pilihan umum yang hadir pada pemasangan Debian GNU/Linux Jessie, dan cuba memahami semuanya.
/etc/profil
Secara lalai, Debian menyediakan /etc /profil, yang segera digunakan untuk menetapkan laluan $ (digunakan untuk mengisytiharkan laluan carian arahan).
Untuk kemudahan, pengguna root (pengguna id 0) mendapat laluan yang berbeza yang ditakrifkan kepada orang lain. Itu kerana lokasi sistem binari (SBIN) yang sesuai untuk pentadbiran sistem atau program yang mesti dijalankan sebagai akar. Laluan permainan ditinggalkan untuk root kerana anda tidak boleh menjalankan program sebagai pengguna root melainkan benar -benar diperlukan.
seterusnya, /etc /profil mengendalikan persediaan $ PS1, yang digunakan untuk menetapkan rentetan proph primer. Nilai lalai yang ditakrifkan ialah '$' (atau '#' untuk akar), kecuali shell adalah bash. Jika shell adalah bash, /etc/bash.bashrc diperoleh untuk mengendalikannya (antara lain) sebaliknya. Kami akan bercakap mengenai /etc/bash.bashrc tidak lama lagi.
Jadi pada ketika ini, kita boleh menyimpulkan bahawa /etc /profil dibaca oleh semua cengkerang semasa log masuk (iaitu oleh arahan log masuk). Daripada menggunakan pembolehubah terbina dalam Bash yang lebih cekap $ {UID} untuk menentukan ID pengguna, /etc /profil memanggil arahan ID untuk ini. Daripada mendefinisikan prompt shell mewah, konfigurasi khusus bash telah diperoleh, kerana Bash menyokong watak-watak khas yang diasaskan oleh backslash seperti U (Nama Pengguna) dan H (HostName), yang mana banyak cangkang lain tidak akan. /etc/profil harus cuba mematuhi POSIX, supaya bersesuaian dengan mana -mana shell pengguna mungkin memasang untuk dirinya sendiri.
Debian GNU/Linux sering kali dipasang dengan DASH, yang merupakan shell asas yang hanya bertujuan untuk melaksanakan sambungan POSIX (dan beberapa Berkeley). Sekiranya kita mengubah suai /etc /profil (membuat sandaran terlebih dahulu!) Untuk mempunyai garis PS1 = '$' menetapkan nilai yang berbeza dan mensimulasikan log masuk dash (melalui perintah dash -l), kita dapat melihat dash menggunakan prompt yang kami tentukan . Walau bagaimanapun, jika kita sebaliknya memanggil perintah dash tanpa hujah -l, /etc /profil tidak dibaca, dan Dash jatuh kembali ke nilai lalai (yang secara kebetulan adalah nilai PS1 asal sebelum kita mengubahnya).
Perkara menarik yang terakhir untuk diperhatikan tentang /etc /profil adalah coretan berikut pada akhir:
<span>if [ "<span><span>`id -u`</span>"</span> -eq 0 ]; then </span> <span><span>PATH</span>="/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin" </span><span>else </span> <span><span>PATH</span>="/usr/local/bin:/usr/bin:/bin:/usr/local/games:/usr/games" </span><span>fi </span><span>export PATH</span>
~/.bash_profile, ~/.bash_login, dan ~/.profile
seseorang perlu menjaga kepentingan ini dalam fikiran. Direktori rangka debian lalai (/etc/skel, yang digunakan untuk rumah dan direktori untuk disalin ke direktori rumah pengguna baru) termasuk fail .profile, tetapi bukan fail .bash_profile atau .bash_login. Juga, Debian menggunakan Bash sebagai shell pengguna lalai. Oleh itu, banyak pengguna terbiasa meletakkan tetapan shell login bash mereka di .profile.
Saya telah melihat arahan pemasangan untuk projek -projek seperti RVM mengarahkan pengguna untuk membuat fail .bash_profile, tetapi ini berbahaya, kerana ia boleh memecahkan persekitaran shell pengguna! Walaupun pengguna tidak mengubahsuai. Profile, dia mungkin mengambil kesempatan daripada fungsi lalai ~/.profile yang menambah ~/bin ke pembolehubah persekitaran $ Path. Ini tidak akan berfungsi lagi. Satu pilihan yang mungkin meningkatkan keselamatan ialah menambah .bash_profile sebagai symlink ke .bashrc in /etc /skel sebelum membuat akaun pengguna.
Jika kita melihat skrip lalai Debian Jessie, kita dapat melihat coretan berikut:
<span>if [ "<span><span>`id -u`</span>"</span> -eq 0 ]; then </span> <span><span>PATH</span>="/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin" </span><span>else </span> <span><span>PATH</span>="/usr/local/bin:/usr/bin:/bin:/usr/local/games:/usr/games" </span><span>fi </span><span>export PATH</span>
Ini sama dengan apa yang kita lihat dalam /etc /profil, di mana /etc/bash.bashrc diperoleh jika dijumpai dan shell adalah bash. Kepentingan ini dibincangkan di bahagian seterusnya.
Apabila dimulakan, Bash akan membaca kedua ). Ini adalah tingkah laku standard untuk shell bash. Walau bagaimanapun, Debian sumber fail -fail ini dari/etc/profil dan ~/.profile login skrip masing -masing. Ini secara berkesan mengubah tingkah laku seperti itu /etc/bash.bashrc dan .bashrc (jika ada) kedua -duanya selalu dipanggil apabila shell bash dimulakan, tanpa mengira shell masuk atau tidak. Jangan bergantung pada tingkah laku ini yang sama merentasi pengagihan yang berbeza.
.bashrc adalah tempat yang bagus untuk menambah alias perintah. Malah, sesetengah orang mempunyai banyak alias yang mereka lebih suka menyimpannya dalam fail yang berasingan. Lalai Debian .Bashrc mencari ~/.bash_aliases dan sumbernya jika fail itu wujud, jadi jangan ragu untuk menyimpan semua alias bash anda di sana. .BashRC juga merupakan tempat terbaik bagi pengguna untuk mengatasi pembolehubah shell seperti $ PS1 atau $ histsize (jumlah sejarah arahan untuk disimpan) jika dia mahu. Lalai Debian .Bashrc adalah 100 baris panjang, tetapi membaca dengan mudah dan berkomentar dengan baik. Seperti namanya, .bashrc tidak dijangka diperolehi oleh kerang bukan bash.
Jika anda seorang pengguna desktop GNU/Linux yang log masuk secara tempatan melalui pengurus paparan (berbanding dengan program log masuk melalui getty),/etc/profil dan ~/.profile tidak boleh dijangka berfungsi. Sesetengah pengurus paparan salah sumber fail ini secara langsung - seperti Pengurus Paparan GNOME - tetapi DM lain, seperti LightDM, tidak. Nasib baik, anda mempunyai pilihan lain.
Apabila sesi sistem tetingkap X dimulakan (tanpa mengira menggunakan pengurus paparan atau startX dari terminal maya) skrip shell/etc/x11/xSession akan dilaksanakan. Ini pada dasarnya bersamaan dengan /etc /profil yang digunakan oleh cengkerang log masuk, hanya untuk x dan tidak bersumber tetapi secara langsung dilaksanakan. Ia juga jauh lebih kompleks. Sama seperti bagaimana/etc/profil dibaca dalam skrip dari /etc/profile.d,/etc/x11/xSession Sumber Scripts di bawah /etc/x11/xSession.d. Semua skrip dalam direktori ini bermula dengan nombor, jadi skrip akan dimuatkan dalam urutan bernombor.
Debian Jessie termasuk fail di sana bernama 40x11-common_xsessionrc. Apa yang dilakukan adalah periksa untuk melihat sama ada ~/.xSessionRC boleh dibaca, dan (jika ya) sumbernya. Ini menjadikan ~/.xSessionrc tempat yang sempurna untuk memuatkan pembolehubah persekitaran atau menjalankan utiliti sekali pada pelancaran (seperti Xrandr atau Xmodmap) yang hanya digunakan untuk sesi X. Anda juga boleh menggunakan ini untuk sumber/etc/profil dan ~/.profile jika anda mahu, jadi mana -mana pembolehubah persekitaran yang dinyatakan akan diwarisi oleh pengurus sesi anda juga (jika mereka belum lagi). Perhatikan bahawa .xSessionRC tidak wujud secara lalai, jadi anda mesti menciptanya.
Jika kita terus melayari fail dalam/etc/x11/xSession, kita dapati 50x11-common_determine-startup yang menentukan pengurus sesi ke beban. Jika fail ~/.xSession wujud dan boleh dilaksanakan, ia akan disimpan dan dilaksanakan kemudian sebagai sebahagian daripada 99x11-common_start. Oleh kerana ~/.xSession dimaksudkan untuk menjalankan Pengurus Sesi, sesi X akan keluar dan anda akan dikembalikan ke skrin Log Masuk Paparan anda apabila skrip ini berakhir.
seperti ~/.xSessionrc, ~/.xSession tidak wujud secara lalai, jadi anda perlu membuatnya jika anda menginginkannya. Anda mungkin membuat skrip yang mudah .xession yang kelihatan seperti berikut:
<span>if [ "<span><span>`id -u`</span>"</span> -eq 0 ]; then </span> <span><span>PATH</span>="/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin" </span><span>else </span> <span><span>PATH</span>="/usr/local/bin:/usr/bin:/bin:/usr/local/games:/usr/games" </span><span>fi </span><span>export PATH</span>
di mana X-Sesi-Manager mungkir kepada apa sahaja yang dikonfigurasikan melalui perintah kemas kini-alternatif. Dengan cara ini, anda boleh menukar pengurus sesi dengan mudah dari lalai sistem, hanya dengan menggantikan x-sesi-manager dengan mengatakan,/usr/bin/startxfce4 (untuk beralih ke xfce) dan akaun pengguna lain akan ditinggalkan sepenuhnya .
Sudah tentu, banyak pengurus paparan menyediakan keupayaan untuk memilih pengurus sesi biasa secara langsung dari skrin log masuk, jadi fail ini sering tidak diperlukan. Walau bagaimanapun .xSession menyediakan banyak fleksibiliti, dan anda boleh mempunyai apa -apa program yang dipanggil di sini - bukan hanya pengurus sesi. Sebagai contoh, anda mungkin memanggil Chromium atau Iceweasel dalam beberapa gelung di sini sebaliknya untuk melaksanakan persediaan mod kiosk asas.
Kami meliputi sebelum ini fail yang dibaca apabila pengguna menjalankan shell masuk bash interaktif, tetapi bagaimana jika anda mahu menjalankan program apabila anda keluar? Untuk kes itu, ~/.bash_logout adalah rakan anda. Lalai yang dimasukkan dalam Debian hanya digunakan untuk membersihkan skrin (yang saya rasa penting dari perspektif keselamatan), tetapi dengan sedikit imaginasi dapat digunakan untuk tujuan lain - sebagai contoh, untuk memaparkan peringatan selama beberapa saat sebelum anda berjalan jauh dari mesin anda.
Faktor pembatas utama ialah .bash_logout hanya dibaca ketika keluar dari shell interaktif, dan seseorang tidak dapat menganggapnya akan dimuatkan ketika keluar dari sesi X.
Pilihan LainContoh
Jika anda mahu skrip mencari lokasi direktori peribadi dan tambahkannya ke laluan anda, anda perlu mempertimbangkan jika direktori akan bergerak banyak. Jika anda menambah kod untuk melakukannya ke .profile, pengguna perlu log keluar dan masuk semula untuk jalan untuk mencerminkan perubahan direktori semasa sesi pengguna. Jika anda sebaliknya menambah kod ke .bashrc, ini bermakna kod akan dilaksanakan setiap kali pengguna membuka xterm - yang mungkin tidak sesuai jika ia mengambil masa lebih dari setengah saat atau lebih untuk dilaksanakan. Oleh itu, ia adalah satu perkara untuk menimbang perdagangan.
Bagaimana jika anda mahukan pemboleh ubah persekitaran hanya untuk sesi log masuk peribadi anda? Jika ia hanya menyangkut sesi X, anda boleh menambahkannya ke ~/.xSessionRC. Ini mempunyai kelebihan bahawa ia biasanya akan tersedia untuk semua program yang dilancarkan melalui X Sesi Pengurus, kerana ia ditetapkan sebelum melancarkan Pengurus Sesi X, dan oleh itu diwarisi. Sebagai contoh, sesetengah pemandu grafik boleh mempunyai vSync dilumpuhkan dengan menjalankan
Jadi meletakkannya dalam .xSessionRC harus mempengaruhi semua program.
<span>if [ "<span><span>`id -u`</span>"</span> -eq 0 ]; then </span> <span><span>PATH</span>="/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin" </span><span>else </span> <span><span>PATH</span>="/usr/local/bin:/usr/bin:/bin:/usr/local/games:/usr/games" </span><span>fi </span><span>export PATH</span>
Walau bagaimanapun jika garis itu ditambah kepada .bashrc, hanya program yang dilancarkan melalui xterm akan terjejas; Program yang dilancarkan melalui pelancar pengurus tetingkap akan berjalan seperti biasa. Anda boleh menambahkannya ke .profile dan sumber. Profile dari .xSessionRC, tetapi kemudian anda tidak perlu mengeksport pembolehubah persekitaran walaupun pelayan X anda tidak berjalan. Mudah -mudahan anda kini mempunyai pemahaman yang lebih baik bagaimana skrip log masuk dan logout berfungsi pada sistem Debian GNU/Linux. Marilah kita tahu dalam komen jika anda telah membuat atau menemui sebarang kegunaan yang menarik atau kreatif untuk skrip log masuk dan logout ini, dan bagaimana anda melakukannya. Seterusnya dalam siri ini, saya akan membincangkan pilihan pengurusan dotfile. Ya, skrip log masuk nix boleh digunakan untuk menguruskan pakej. Nix mempunyai sistem pengurusan pakej yang kuat yang membolehkan anda memasang, menaik taraf, dan mengeluarkan pakej dengan cara yang konsisten dan boleh dihasilkan. Anda boleh menggunakan skrip log masuk Nix untuk memasang atau mengemas kini pakej secara automatik setiap kali anda log masuk, memastikan persekitaran anda sentiasa mempunyai versi terkini perisian yang anda perlukan. Menetapkan pembolehubah persekitaran dalam skrip login NIX adalah semudah menambah garis seperti varname eksport = nilai ke skrip. Ini akan menetapkan varname pembolehubah persekitaran kepada nilai nilai untuk tempoh sesi log masuk. Anda juga boleh menggunakan arahan eksport untuk membuat pembolehubah yang tersedia untuk subprocesses. Contohnya, laluan eksport = $ Path:/Path/to/dir akan menambah/jalan/ke/direk ke pembolehubah persekitaran jalan, membuat executable dalam direktori yang tersedia tanpa perlu menentukan jalan penuh. Ya, skrip log masuk nix boleh digunakan untuk memulakan perkhidmatan. Ini boleh dilakukan dengan menambahkan arahan ke skrip yang memulakan perkhidmatan yang dikehendaki. Sebagai contoh, anda boleh menambah garis seperti SistemCTL Mula ServiceName untuk memulakan perkhidmatan SystemD. Perhatikan bahawa anda memerlukan keizinan yang sesuai untuk memulakan perkhidmatan, jadi ini mungkin memerlukan skrip dengan sudo atau sebagai akar. Untuk membuat skrip log masuk NIX dijalankan secara automatik pada log masuk, anda perlu menambahkannya ke tempat yang sesuai dalam fail permulaan shell anda. Untuk Bash, ini biasanya fail .bash_profile atau .bashrc di direktori rumah anda. Anda boleh menambah baris seperti Sumber ~/.Nix-Profile ke fail ini untuk menjalankan skrip login Nix anda setiap kali anda memulakan sesi bash baru. Menguruskan jalan anda dengan skrip log masuk NIX melibatkan menambah direktori ke pembolehubah persekitaran jalan. Ini boleh dilakukan dengan garis seperti laluan eksport = $ path:/path/to/dir, yang menambah/jalan/ke/dire ke jalan. Ini menjadikan executable dalam direktori yang tersedia tanpa perlu menentukan jalan penuh. Anda boleh menambah seberapa banyak direktori ke jalan yang anda suka, memisahkannya dengan kolon. Automatikkan tugas yang perlu dilakukan pada log masuk. Ini termasuk apa -apa dari menetapkan pembolehubah persekitaran dan memulakan perkhidmatan untuk memasang pakej dan mengemas kini perisian. Dengan mengautomasikan tugas -tugas ini, anda boleh menjimatkan masa dan memastikan bahawa ia dilakukan secara konsisten setiap kali anda log masuk. Soalan Lazim (Soalan Lazim) Mengenai Skrip Masuk Nix
Apakah kepentingan skrip log masuk NIX dalam konfigurasi sistem? Mereka adalah skrip yang berjalan secara automatik apabila pengguna log masuk ke dalam sistem NIX. Skrip ini digunakan untuk menubuhkan persekitaran pengguna, termasuk menetapkan pembolehubah persekitaran, menentukan fungsi, dan menjalankan skrip lain. Ini membolehkan persekitaran yang konsisten dan boleh dihasilkan di seluruh sesi yang berlainan dan juga mesin yang berbeza. Ia juga menyediakan cara untuk mengautomasikan tugas yang perlu dilakukan pada log masuk, menjimatkan masa dan mengurangkan potensi untuk kesilapan. Skrip melibatkan penulisan skrip shell yang dilaksanakan apabila pengguna log masuk. Skrip ini biasanya diletakkan di direktori rumah pengguna dan dinamakan .Nix-Profile. Skrip ini boleh mengandungi sebarang arahan yang ingin anda jalankan di log masuk, seperti menetapkan pembolehubah persekitaran atau perkhidmatan permulaan. Sebaik sahaja skrip dibuat, anda boleh membuatnya boleh dilaksanakan dengan menjalankan perintah chmod x .nix-profil dilakukan dengan menambahkan set -x pada permulaan skrip. Ini akan menyebabkan shell mencetak setiap arahan sebelum dilaksanakan, yang dapat membantu anda mengenal pasti sebarang kesilapan atau tingkah laku yang tidak dijangka. Jika skrip berjalan tanpa kesilapan tetapi tidak menghasilkan hasil yang diharapkan, anda boleh menambah pernyataan echo sepanjang skrip untuk mencetak nilai pembolehubah atau maklumat lain yang dapat membantu anda memahami apa yang sedang berlaku. Skrip log masuk nix untuk menguruskan pakej?
Bagaimana saya menggunakan skrip log masuk NIX untuk menetapkan pembolehubah persekitaran?
Saya menggunakan skrip login Nix untuk menjalankan perkhidmatan?
Bolehkah saya menggunakan skrip login Nix untuk menyesuaikan prompt shell saya?
Atas ialah kandungan terperinci Memahami *skrip log masuk nix. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!