Setelah beralih menggunakan .bashrc
dari pada .bash_profile
(Saya tidak suka bagaimana terminal default bekerja dengan satu file konfigurasi dan seperti utilitas screen
dengan yang lain), perilaku iterm2 berubah. Sebelumnya, ketika saya mengatur judul tab secara manual, mereka akan tetap di sana kecuali saya ssh
akan masuk ke server lain, di mana judul akan berubah menjadi username@otherservername: /location/in/other/servers/filesystem
. Sekarang, ketika saya mengubah judul tab, mereka tetap demikian sampai perintah pertama saya jalankan di tab itu. Segera setelah saya menjalankan sesuatu, judul tab beralih ke myusername@mymacname: /my/location/in/my/mac/filesystem
.
Menggunakan argumen baris perintah, echo -ne "\e]1;tab title\a"
tidak membantu. Itu beralih (cukup lambat untuk melihat perubahan judul di layar), tetapi ketika perintah keluar, judul kembali ke tempat sebelumnya: myusername@mymacname: /my/location/in/my/mac/filesystem
.
Idealnya, saya ingin judul tab untuk TIDAK PERNAH beralih secara otomatis, termasuk ketika saya ssh
ke server lain. Jika itu tidak memungkinkan, saya ingin kembali ke perilaku sebelumnya: selama saya menggunakan mesin lokal, pertahankan judul tab yang saya atur. Bisakah itu dilakukan?
Ini file .bashrc saya:
# ~/.bashrc: executed by bash(1) for non-login shells.
# see /usr/share/doc/bash/examples/startup-files (in the package bash-doc)
# for examples
# If not running interactively, don't do anything
[ -z "$PS1" ] && return
# don't put duplicate lines in the history. See bash(1) for more options
# don't overwrite GNU Midnight Commander's setting of `ignorespace'.
export HISTCONTROL=$HISTCONTROL${HISTCONTROL+,}ignoredups
# ... or force ignoredups and ignorespace
export HISTCONTROL=ignoreboth
# append to the history file, don't overwrite it
shopt -s histappend
# for setting history length see HISTSIZE and HISTFILESIZE in bash(1)
# check the window size after each command and, if necessary,
# update the values of LINES and COLUMNS.
shopt -s checkwinsize
# make less more friendly for non-text input files, see lesspipe(1)
[ -x /usr/bin/lesspipe ] && eval "$(SHELL=/bin/sh lesspipe)"
# set variable identifying the chroot you work in (used in the prompt below)
if [ -z "$debian_chroot" ] && [ -r /etc/debian_chroot ]; then
debian_chroot=$(cat /etc/debian_chroot)
fi
# set a fancy prompt (non-color, unless we know we "want" color)
case "$TERM" in
xterm-color) color_prompt=yes;;
esac
# uncomment for a colored prompt, if the terminal has the capability; turned
# off by default to not distract the user: the focus in a terminal window
# should be on the output of commands, not on the prompt
force_color_prompt=yes
if [ -n "$force_color_prompt" ]; then
if [ -x /usr/bin/tput ] && tput setaf 1 >&/dev/null; then
# We have color support; assume it's compliant with Ecma-48
# (ISO/IEC-6429). (Lack of such support is extremely rare, and such
# a case would tend to support setf rather than setaf.)
color_prompt=yes
else
color_prompt=
fi
fi
if [ "$color_prompt" = yes ]; then
PS1='${debian_chroot:+($debian_chroot)}\[\033[01;36m\]\u@\h\[\033[00m\]:\[\033[01;34m\]\W\[\033[00m\]\$ '
else
PS1='${debian_chroot:+($debian_chroot)}\u@\h:\w\$ '
fi
unset color_prompt force_color_prompt
# If this is an xterm set the title to user@host:dir
case "$TERM" in
xterm*|rxvt*)
PS1="\[\e]0;${debian_chroot:+($debian_chroot)}\u@\h: \w\a\]$PS1"
;;
*)
;;
esac
# Alias definitions.
# You may want to put all your additions into a separate file like
# ~/.bash_aliases, instead of adding them here directly.
# See /usr/share/doc/bash-doc/examples in the bash-doc package.
#if [ -f ~/.bash_aliases ]; then
# . ~/.bash_aliases
#fi
# enable color support of ls and also add handy aliases
if [ -x /usr/bin/dircolors ]; then
eval "`dircolors -b`"
alias ls='ls --color=auto -hF'
#alias dir='dir --color=auto'
#alias vdir='vdir --color=auto'
#alias grep='grep --color=auto'
#alias fgrep='fgrep --color=auto'
#alias egrep='egrep --color=auto'
fi
# some more ls aliases
#alias ll='ls -l'
#alias la='ls -A'
#alias l='ls -CF'
# enable programmable completion features (you don't need to enable
# this, if it's already enabled in /etc/bash.bashrc and /etc/profile
# sources /etc/bash.bashrc).
if [ -f /etc/bash_completion ]; then
. /etc/bash_completion
fi
source ~/.local/bin/bashmarks.sh
export PATH=/usr/local/bin:/usr/local/sbin:/opt/local/bin:/opt/local/sbin:$HOME/bin:$PATH
export MANPATH=/opt/local/man:$MANPATH
export CLICOLOR=1
export LSCOLORS=ExFxCxDxBxegedabagacad
Jawaban:
Buka Preferensi Iterm & gt; Profil & gt; Terminal
Hapus centang "Terminal dapat mengatur judul tab / jendela"
Sekarang Anda dapat memberi nama tab Anda, ssh ke server, keluar dan tetap menggunakan nama tab asli.
Kredit untuk: https://groups.google.com/forum/#!topic/iterm2-discuss/czV-sv4ykzI
Salam, Alan
sumber
Yakinkan
$PROMPT_COMMAND
tidak diatur dengan berjalanJika outputnya tidak kosong, skrip itu dijalankan tepat sebelum prompt ditampilkan oleh shell.
Pada OS X Lion, nilai standarnya adalah
update_terminal_cwd
, dan terlihat seperti ini:Ini digunakan untuk menambahkan direktori kerja saat ini ke bilah judul Terminal.
sumber
Untuk mencegah host Anda ssh dari mengubah judul, biasanya lakukan
sebelum Anda ssh melakukan trik, karena file inisialisasi default (bashrc dll) melihat variabel terminal dan hanya mengubah judul jika terminal xterm (yang saat ini adalah standar de facto).
Catatan: dengan trik ini Anda kehilangan setidaknya "layar alternatif", warna, dan mungkin fitur terminal mewah lainnya yang mungkin Anda hargai atau mungkin tidak Anda hargai.
sumber
unalias -a
lagi untuk menghindari warna.Ditemukan (sebagian) jawaban. Jika bagian ini dikomentari:
yaitu.:
Judul tab dipertahankan selama Anda berada di mesin lokal. Server masih mengubahnya.
sumber
PS1
: Masukecho $PS1
pada baris perintah untuk melihatnya, masukkanPS1='\$'
untuk mengaturnya ke nilai minimal untuk menguji apakah pengaturan itu bertanggung jawab untuk mengubah judul jendela Anda.Terima kasih untuk semuanya di sini. AKU AKHIRNYA menemukan apa yang harus kulakukan.
Hanya menyimpan nama tab lokal tidak berguna bagi saya karena saya secara khusus berurusan dengan ssh ke dalam kotak.
Saya menggunakan warna di terminal saya dan saya tidak ingin menonaktifkan warna seperti solusi Viljo.
Secara khusus, saya menjalankan beberapa kotak gelandangan di mesin lokal saya dan saya tetap membuka tab untuk beberapa dari mereka. Saya ingin dengan mudah mengatur nama tab ke versi OS dari kotak gelandangan, dan tetap seperti itu. Saya menjaga tab terbuka untuk waktu yang lama, jadi saya tidak keberatan mengatur nama secara manual, tetapi tidak perlu diatur ulang kembali secara otomatis.
Juga, karena ini adalah kotak gelandangan, saya tidak ingin mengubah pengaturan pada mereka bahwa saya harus mengubah lagi nanti jika saya
vagrant destroy
.Jadi, temuan saya:
Pada CentOS 6, kode pembaruan nama tab ditempatkan
$PROMPTNAME
. Ini dapat dinetralkan dan tabname diatur dalam satu perintah dengan menjalankan:Di Ubuntu, kode pembaruan nama tab langsung masuk
$PS1
; itu akan ditambahkan ke nilai yang sudah ditetapkan dari$PS1
oleh~/.bashrc
. Ini dapat dikembalikan dan tabname diatur dalam satu perintah dengan menjalankan:sumber