Jawaban:
Hanya tembakan dalam kegelapan: ada skrip atau perintah di Anda ~/.bash_profile
yang mencoba untuk menulis /dev/ttys000
yang ditutup untuk menulis untuk proses / pengguna.
Jika Anda ingin mengidentifikasi di mana kesalahan itu terjadi, coba aktifkan debugging shell saat ini:
set -x # To enable debugging
source ~/.bash_profile # source the file
set +x # To disable debugging
Jika Anda menemukan siapa / mengapa dan Anda tidak dapat menyelesaikan masalah, kirimkan pertanyaan lain tentang itu.
Contoh:
Dalam file aaa.sh
ada:
date +"%H:%M:%S"
ls /ahksfjkasd
echo Hi!
Output dari set -x; source aaa.sh; set +x
adalah:
++ date +%H:%M:%S
17:54:09
++ ls --color=auto /ahksfjkasd
ls: cannot access /ahksfjkasd: No such file or directory
++ echo 'Hi!'
Hi!
Kesalahan dihasilkan dari baris sebelum ( ++ ls --color /ahksfjkasd
)
~/.bash_profile
menyebabkan masalah - itu export GPG_TTY="$(`tty`)"
, di mana GPG_TTY
variabel lingkungan diperlukan untuk program pinentry kutukan yang digunakan oleh GnuPG - gnupg.org/documentation/manuals/gnupg/Common-Problems.html . Saya tidak mengerti rekomendasi mereka, mereka ingin nilai `tty`
ditugaskan GPG_TTY
, tetapi ini tidak berhasil. Menghapus backticks memberi nilai yang benar tty
untuk GPG_TTY
.
`
dari ekspresimu. (sangat terlambat ;) ). Menggunakan a = `mycommand`
atau a = $(mycommand)
menghasilkan efek yang sama (jalankan perintah mycommand
dan simpan hasilnya dalam variabel a
). Mungkin salah cetak.
GPG_TTY="$(tty)
".
~/.bash_profile
... Di sini di luar ada lebih banyak pengguna Linux daripada Osx daripada yang dapat Anda bayangkan ... :-)