Konfigurasikan Console2 untuk membuka bash di folder saat ini


4

Saya pernah melihat ini tetapi tidak berhasil untuk saya. Saya tidak menggunakan versi Git dari bash tetapi yang ada pada cygwin, sehingga bisa menjadi bagian dari masalah. Ini adalah cara saya mengatur tab di Console2:

Title: bash.exe
Shell: C:\cygwin\bin\bash.exe --login -i
Startup dir: %HOMEDRIVE%%HOMEPATH%

Ini adalah entri registri saya:

Directory
    shell
        Console2
            Open Console2 Here
            command
                "C:\Console2\Console.exe" -d "%1"

bash selalu dimulai di direktori home saya alih-alih direktori yang saya klik, maka saya harus cd /cygdrive/d/code... dll. Saya mencoba menghapus nilai di bidang "Startup dir", mengubahnya menjadi% 1,% 1% tanpa keberuntungan.

Saya juga mencoba solusi ini tetapi tidak berhasil untuk saya:

Title: bash.exe
Shell: C:\cygwin\bin\bash.exe -l

Daftar:

Directory
    shell
        Console2
            Open Console2 Here
            command
                "C:\Console2\Console.exe" -d "%V"

Solusi di atas berfungsi untuk versi bash.exe dan sh.exe yang disertakan dengan Git, tetapi bukan versi yang disertakan dengan cygwin karena beberapa alasan. Masih mencari alasan untuk ini.

SUNTING

Saya memilih jawaban di bawah ini, tetapi saya pikir solusi kedua di atas akan bekerja jika saya telah membuat file profil di folder kanan. Saya terus mencoba membuatnya di direktori home saya yang normal daripada direktori home yang digunakan oleh cygwin, itulah sebabnya mengapa ia tidak pernah menjalankan script. Ini membuat saya percaya bahwa file profil tidak diperlukan. Jawaban yang saya pilih (terima kasih Hugh!) Dengan jelas menjelaskan bagaimana masing-masing skrip (.bash_profile, .bash_login, .profile, dan .bashrc) digunakan oleh bash yang membantu saya mengetahui bahwa saya meletakkannya di tempat yang salah.



Saya akan melihat ke ConEmu tapi saya juga akan memberi hadiah pada pertanyaan ini. Sepertinya harus ada jalan!
David Kennedy

Jawaban:


5

Dari manual ,

Ketika Bash dipanggil sebagai shell login interaktif, atau sebagai shell non-interaktif dengan opsi --login, Bash pertama kali membaca dan mengeksekusi perintah dari file / etc / profile, jika file itu ada.

/etc/profile secara default berisi kode berikut:

# Make sure we start in home unless invoked by CHERE
if [ ! -z "${CHERE_INVOKING}" ]; then
  unset CHERE_INVOKING
else
  cd "${HOME}" || echo "WARNING: Failed attempt to cd into ${HOME}!"
fi

Jadi salah satu solusinya adalah membuat file batch Windows yang menetapkan variabel lingkungan CHERE_INVOKINGsebelum memulai bash. Itu tidak terlalu rapi.

Lanjut,

Setelah membaca file itu, ia mencari ~ / .bash_profile, ~ / .bash_login, dan ~ / .profile, dalam urutan itu, dan membaca serta mengeksekusi perintah dari yang pertama yang ada dan dapat dibaca.

Skrip profil ini secara default menjalankan ~/.bashrcskrip Anda jika ada. Menempatkan cd -pada akhir .bashrckarya saya untuk saya (dengan bash Console2 dan Cygwin terbaru):

echo 'cd -' >> ~/.bashrc

BTW, saya memohon Console2 ( Console.exe) tanpa argumen - Windows Explorer memastikan bahwa itu dimulai di direktori yang saya klik kanan. Saya menggunakan XP tapi saya ragu MS akan mengubah perilaku ini di versi Windows yang lebih baru. Saya juga membiarkan opsi "startup dir" kosong untuk tab Bash saya.


2

Tampaknya, Anda belum membuat ~/.profiledengan yang berikut:

cd -

https://superuser.com/a/387273/139371


Maaf, saya harus menentukan jawaban WHICH pada halaman yang saya ikuti. Itu adalah dari @CharlesRoper, yang tidak melibatkan penggunaan file profil di direktori root. Saya mencoba solusi yang Anda maksudkan dari svnpenn juga tetapi tidak berhasil juga.
David Kennedy

Apakah ls menunjukkan file ini setelah bash startup?
Maximus

Tidak ... sebenarnya saya berhasil mendapatkan solusi @ svnpenn yang bekerja dengan bash.exe dan sh.exe yang disertakan dengan Git tetapi file .profile tidak melakukan apa-apa.
David Kennedy

Gores komentar terakhir itu. Saya meletakkan file profil di direktori yang salah. Lihat hasil edit saya di atas.
David Kennedy
Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.