Mengapa Terminal tidak menghormati preferensi?
Suatu saat di minggu lalu Terminal saya berhenti menerima pengaturan "Tab baru dibuka dengan: Direktori Kerja yang Sama". Pengujian dengan "Jendela baru ..." memberikan hasil yang sama.
Shell saya adalah zsh.
Saya bisa mendapatkan ini untuk bekerja dengan mengikuti jawaban di sini dari Dan Rosenstark https://apple.stackexchange.com/a/340778/398648
# http://superuser.com/a/315029/4952
# Set Apple Terminal.app to resume directory... still necessary 2018-10-26
if [[ $TERM_PROGRAM == "Apple_Terminal" ]] && [[ -z "$INSIDE_EMACS" ]] {
function chpwd {
local SEARCH=' '
local REPLACE='%20'
local PWD_URL="file://$HOSTNAME${PWD//$SEARCH/$REPLACE}"
printf '\e]7;%s\a' "$PWD_URL"
}
chpwd
}
Tapi: Saya tidak tahu bagaimana saya bisa menentukan ini untuk diri saya sendiri, atau bagaimana saya bisa men-debug masalah serupa .
Tip atau trik apa pun untuk mengetahui langkah-langkah awal Terminal akan sangat dihargai.
Hal-hal yang tidak berhasil:
- Beralih setelan untuk Tab Baru atau Jendela Baru
- Mengganti nama atau menambahkan
return
di baris pertama.zshrc
,.zsh*
file - Semua saran di Buka tab Terminal baru di direktori kerja saat ini tidak berfungsi
Info lain yang mungkin berguna:
- Pengaturan "Profil Sama" / "Profil Default" akan diterapkan saat diubah
- Menambahkan
pwd
sebagai baris pertama.zshrc
menunjukkan direktori sudah/home/<myuser>
- Saya telah menginstal dan menghapus beberapa alat dan proyek yang melibatkan
nix
baru - baru ini (termasuknix-darwin
)

Metadata:
OS macOS Catalina 10.15.7 (19H2)
Terminal 2.10 (433)
zsh 5.7.1 (x86_64-apple-darwin19.0)
Jawaban
Jika Anda mengklik "Escape sequence ..." di screenshot itu, Anda akan melihat yang berikut ini:

Namun, hal ini tidak memberi tahu Anda bahwa ini biasanya ditangani dalam file /etc/zshrc_Apple_Terminal
, yang dipanggil dari /etc/zshrc
. Ada beberapa hal yang dapat mencegah /etc/zshrc_Apple_Terminal
pemanggilan atau yang dapat mengesampingkan apa yang coba dilakukannya:
- Anda memulai Zsh dengan
zsh -d
atauzsh -f
. - Anda memiliki file
${ZDOTDIR:-$HOME}/.zshenv
atau${ZDOTDIR:-$HOME}/.zprofile
di mana Anda memilikisetopt NO_rcs
atausetopt NO_globalrcs
- Parameter
$TERM_PROGRAM
tidak memiliki nilaiApple_Terminal
. - Zsh tidak memiliki akses baca ke
/etc/zshrc_Apple_Terminal
. - Saat
/etc/zshrc_Apple_Terminal
bersumber, parameternya$INSIDE_EMACS
bukan nol. - Anda mendefinisikan fungsi
precmd
beberapa saat setelah/etc/zshrc_Apple_Terminal
bersumber, yang kemudian menggantikan fungsi yang ditentukan olehadd-zsh-hook
.
Apa yang dapat Anda lakukan untuk men-debug:
- Mulai subkulit tanpa file konfigurasi non-global dan lihat apakah bug juga terjadi di sana:
Jika masalah tidak terjadi di subkulit ini, itu berarti masalahnya ada di suatu tempat di dotfiles non-global Anda. Anda bisa mendapatkan daftar file ini dengan melakukancd $(mktemp -d); HOME=$PWD ZDOTDIR=$PWD zsh
ls ${ZDOTDIR:-$HOME}/.z(log(in|out)|profile|sh(env|rc))(-^/)
- Mulai ulang Zsh dengan
exec zsh -vx
dan pelajari output dari awal untuk melihat apakah/etc/zshrc_Apple_Terminal
bersumber dan apakah nanti ada yang menimpaprecmd
pengait yang dibuatnya.