Mengapa BASH mencetak "bash: cd: write error: Success"?


12

Saya perhatikan ini beberapa kali hari ini. Jika saya mengetik cd ../Directoryuntuk mengubah ke direktori lain, ia mencetak "bash: cd: write error: Success". Saya tidak bisa menentukan apa yang sebelumnya terkait dengan perintah ini.

  • typeset -f tidak mencetak apa pun.
  • alias tidak mencetak apa pun.
  • type -a cd mencetak "cd adalah builtin shell".
  • echo $CDPATH mencetak garis kosong.
  • $BASH_VERSION cetakan "bash: 4.2.37 (1) -release: command not found".
  • Saya hanya memperhatikan ini 2-3 kali. Direktori awal dan direktori target sama dalam kedua situasi. Saya mengubah direktori dengan cara ini berkali-kali, tetapi tidak selalu menemukan kesalahan.

Apa yang menyebabkan ini?


Silakan tambahkan output type -a cdsesuai permintaan Glenn.
terdon

Silakan tambahkan output dari typeperintah ke pertanyaan Anda. Juga, apakah ini terjadi di semua direktori atau hanya jika Anda berada di direktori tertentu? Dan apa hasilnya echo $CDPATH?
terdon

Versi bash apa $BASH_VERSIONyang Anda jalankan?
Gabe

Saya punya bash 4.2.37(1).
Desa

Jawaban:


6

Mungkin bug?

Ini terdengar seperti bug potensial. Saya menemukan laporan serupa yang menunjukkan pesan yang sama. Bug bash: pwd builtin keluar dengan kesalahan tulis: Sukses .

kutipan

Pesan ini akan ditampilkan jika ferror (stdout) mengembalikan bukan nol. Untuk beberapa alasan (mungkin panggilan fflush () segera sebelum cek), stdio menyebabkan ferror () mengembalikan true tanpa pengaturan errno.

Apakah ini terjadi dua kali berturut-turut? Pwd builtin memanggil clearerr () setelah mencetak pesan kesalahan, jadi meskipun flag kesalahan stdout `sticks ', itu akan menghapusnya.

Tidak dapat memperbarui riwayat?

Kesalahan membuat saya berpikir bahwa itu berhasil dalam mengubah direktori, tetapi tidak dapat menulis perintah cd ../Directoryuntuk Anda $HOME/.bash_history. Saya akan mengonfirmasi bahwa file ini utuh dan dapat ditulis. Juga konfirmasikan bahwa $HOMEdirektori Anda dapat ditulis dan tidak lengkap.

$ df -h $HOME
Filesystem                         Size  Used Avail Use% Mounted on
/dev/mapper/fedora_greeneggs-home  402G  157G  225G  42% /home

The /homepartisi memiliki banyak ruang yang tersedia. Saya tidak dapat menemukan sesuatu yang aneh di ".bash_history", sudah diatur untuk membaca dan menulis hanya untuk pemilik. Setiap kali saya keluar dari terminal, data dari terminal itu masih ada di sana. Apakah mungkin ini muncul karena saya menjalankan beberapa terminal terminal secara bersamaan?
Desa

@Village - mungkin, tetapi setiap kali sebuah perintah dijalankan dalam sebuah shell, ia harus mendapatkan kunci pada file histori dan melepaskannya ketika selesai, setiap proses lain yang melakukan hal yang sama hanya akan menunggu.
slm

bash tidak menulis ~/.bash_historylangsung setelah menjalankan perintah, tetapi setelah sesi ditutup, kan?
SOFe

@Pemapmodder - benar, tidak jelas bagi saya jika OP telah melakukan sesuatu seperti ini: askubuntu.com/questions/67283/… .
slm

Saya mengalami masalah yang sama, dan saya cukup yakin bahwa itu tidak benar (karena saya su rootpada waktu itu, dan saya langsung tail /root/.bash_historydan melihat tidak ada yang relevan, lalu exitkembali ke pengguna normal saya, lalu sudo tail /root/.bash_history, dan garis (kedua baris, sejak saya mengulangi cd) memang ditulis
SOFe

3

Perintah cd Anda adalah alias atau kemungkinan besar fungsi bash.

typeset -f  # displays functions
alias       # display aliases

Jika tidak ditemukan dengan perintah di atas which cdakan menemukan jalur cdperintah.

Cari cdalias atau definisi fungsi di skrip mulai normal .bash_profile, .bashrcdan .profile.


typeset -f,, aliasdan which cdsemuanya tidak menghasilkan apa-apa, dan file lainnya hanya berisi PATH=~/.context/tex/texmf-linux/bin/:$PATH.
Desa

2
usetype -a cd
glenn jackman

1
type -a cdmencetak "cd adalah builtin shell".
Desa
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.