Saya ingin menjalankan skrip untuk mengubah direktori kerja saat ini:
#!/bin/bash
cd web/www/project
Tapi, setelah saya jalankan, pwd saat ini tetap tidak berubah! Bagaimana saya bisa melakukan itu?
bash
scripting
environment-variables
cd-command
Sony Santos
sumber
sumber
return
untuk melarikan diri dari skrip yang bersumber dengan cara ini, tidakexit
- mereka seperti fungsi shell, danexit
akan keluar dari shell yang bersumber skrip.source ./script
sama?.
dansource
sama di bash. 2. kita tidak perlu menggunakan./
sebelum nama file jika itu di direktori yang sama. Tidak masalah menjalankan hanya ini:. script
Untuk tugas kecil seperti ini, alih-alih membuat skrip, buat alias seperti ini,
Anda harus menambahkan ini ke
.bashrc
file Anda , jika Anda ingin mengaturnya untuk setiap shell interaktif.Sekarang Anda dapat menjalankan ini sebagai
$ cdproj
.sumber
eval `./script`
ataueval $(./script)
menjalankan perintah tersebut. Ini adalah pendekatan umum untuk perintah yang perlu memperbarui lingkungan shell yang memohon.eval
pendekatan.Gunakan
exec bash
di akhirNamun, pertanyaan ini sering ditanyakan karena seseorang ingin ditinggalkan di bash prompt di direktori tertentu setelah eksekusi skrip bash dari direktori lain.
Jika ini masalahnya, jalankan saja instance bash anak di akhir skrip:
Ini menciptakan subkulit baru. Ketik
exit
untuk kembali ke shell pertama tempat skrip awalnya dimulai.sumber
exec
biasanya dianggap sebagai upaya terakhir dari bajingan .. :)exit
(atau Ctrl + D), Anda harus melakukannya 11 hingga 21 kali. (2) Kelemahan lain dari menggunakan skrip yang dapat dieksekusi adalah, jika Anda mengatur opsi shell (misalnya,dotglob
atauglobstar
) dalam sesi shell interaktif Anda, Anda akan kehilangan mereka, karena Anda memulai shell baru.Meskipun ada jawaban yang melakukan tindakan tepat yang Anda inginkan, metode yang lebih standar untuk tujuan tersebut adalah membuat tautan simbolis:
Kemudian Anda bisa
cd
ke direktori menggunakan namaproj
:Metode ini lebih fleksibel karena Anda dapat mengakses file menggunakan nama pendek tanpa
cd
:sumber
Jika Anda mengubah di antara direktori yang jauh di sistem file. Saya akan merekomendasikan autojump .
sumber
Bergantung pada apa yang akan Anda lakukan, solusi lain dapat membuat fungsi alih-alih skrip.
Contoh:
Buat fungsi dalam file, katakanlah
/home/aidin/my-cd-script
:Kemudian sertakan dalam
bashrc
atauzshrc
file Anda:Sekarang Anda dapat menggunakannya seperti perintah:
sumber
Mengapa tidak menggunakan "exec" untuk melakukan apa yang saya inginkan.
sumber
exit
(atau Ctrl + D), Anda harus melakukannya 11 hingga 21 kali.dotglob
atauglobstar
), Anda akan kehilangan mereka, karena Anda memulai shell baru. … (Lanjutan)Anda dapat melakukannya menggunakan fungsi atau menggunakan && Contoh di bawah menginstal Zabbix dan membuat file dengan garis di dalamnya.
Ex:
atau:
sumber