Gnome-terminal và Zsh: giữ thư mục hiện tại trên tab / cửa sổ mới


12

Tôi đang chạy gnome 3.10.1 trên Arch với Zsh. Tôi đang đối mặt với vấn đề đó là khi tôi tạo một tab hoặc cửa sổ mới từ cửa sổ đầu cuối, nó sẽ đặt lại thư mục hiện tại vào thư mục nhà của tôi.

Tôi đã thử điều này: gnome-terminal: theo dõi thư mục trong tab mới , nhưng nó không hoạt động.

Tôi nghĩ rằng có lẽ nó có thể là một số cấu hình trong .zshrctập tin của tôi , vì vậy, tôi đã dọn sạch nó và đặt dòng sau:

. /etc/profile.d/vte.sh

Tuy nhiên, nó không hoạt động như mong đợi.

Có, tập tin này tồn tại và đây là nội dung của nó:

# Copyright © 2006 Shaun McCance <shaunm@gnome.org>
# Copyright © 2013 Peter De Wachter <pdewacht@gmail.com>
#
# This program is free software; you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
# the Free Software Foundation; either version 3 of the License, or
# (at your option) any later version.
#
# This program is distributed in the hope that it will be useful, but
# WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
# General Public License for more details.
#
# You should have received a copy of the GNU General Public License
# along with this program; if not, write to the Free Software
# Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.

# Not bash or zsh?
[ -n "$BASH_VERSION" -o -n "$ZSH_VERSION" ] || return 0

# Not an interactive shell?
[[ $- == *i* ]] || return 0

# Not running under vte?
[ "${VTE_VERSION:-0}" -ge 3405 ] || return 0

__vte_urlencode() (
  # This is important to make sure string manipulation is handled
  # byte-by-byte.
  LC_ALL=C
  str="$1"
  while [ -n "$str" ]; do
    safe="${str%%[!a-zA-Z0-9/:_\.\-\!\'\(\)~]*}"
    printf "%s" "$safe"
    str="${str#"$safe"}"
    if [ -n "$str" ]; then
      printf "%%%02X" "'$str"
      str="${str#?}"
    fi
  done
)

# Print a warning so that anyone who's added this manually to his PS1 can adapt.
# The function will be removed in a later version.
__vte_ps1() {
  echo -n "(__vte_ps1 is obsolete)"
}

__vte_osc7 () {
  printf "\033]7;file://%s%s\a" "${HOSTNAME:-}" "$(__vte_urlencode "${PWD}")"
}

__vte_prompt_command() {
  printf "\033]0;%s@%s:%s\007%s" "${USER}" "${HOSTNAME%%.*}" "${PWD/#$HOME/~}" "$(__vte_osc7)"
}

case "$TERM" in
  xterm*|vte*)
    [ -n "$BASH_VERSION" ] && PROMPT_COMMAND="__vte_prompt_command" 
    [ -n "$ZSH_VERSION"  ] && chpwd_functions+=(__vte_osc7)
    ;;
esac

true

Điều này thực sự làm tôi khó chịu ...

Có giải pháp nào không?


2
Nó có liên quan đến gnome-terminal, không liên quan đến zsh. Nó dường như là một lỗi được báo cáo , mặc dù lỗi đằng sau liên kết là lỗi của ubfox-gnome.
Risto Salminen

1
bạn đã thử terminatorchưa
RSFalcon7

Vâng, terminator hoạt động tốt, nhưng, ví dụ, nautilus-open-terminaltiện ích mở rộng luôn mở gnome-terminal, tôi đã không thể thay đổi nó ...
Henrique Barcelos

1
Chỉ muốn chỉ ra rằng tôi phải khởi động lại gnome-terminal sau khi tìm nguồn cung cấp vte.sh trong tệp RC của tôi. Không hoạt động chỉ bằng cách lưu nó và mở một tab / cửa sổ mới .. (sử dụng bash / arch / gnome3.10)
Người lái thuyền im lặng

Câu trả lời:


16

Tôi không biết liệu bạn có còn gặp phải vấn đề này không, nhưng tôi thấy vấn đề của mình là tôi đang chạy / bin / zsh như một lệnh tùy chỉnh trong hồ sơ thiết bị đầu cuối của mình. Vô hiệu hóa đã khắc phục sự cố cho tôi - và vẫn giữ zsh làm vỏ chính của tôi.

Hồ sơ thiết bị đầu cuối


Chính xác giải quyết vấn đề cho tôi bằng Fedora, cảm ơn rất nhiều!
Sven Hager

1
thay đổi điều đó có nghĩa là sử dụng bash mặc định thay vì zsh. Vậy làm thế nào để khắc phục vấn đề?
Alfie

@Alfie Người dùng không sử dụng shell mặc định của họ (có thể bash). Điều đó có nghĩa là lệnh được thực thi để đặt dấu nhắc (được thiết lập khi đăng nhập /etc/profile.d/vte.sh) không phải là lệnh đúng và thiết bị đầu cuối không biết về thư mục hiện tại của shell.
xhienne

Ảnh chụp màn hình không cập nhật nữa. Tùy chọn thứ hai không tồn tại nữa; đánh dấu vào cái đầu tiên đã làm Đó là mặc định, nhưng tôi phải đặt ZSH làm vỏ mặc định của mình chsh, tôi đoán vậy.
slhck

4

Có vẻ như bạn phải kích hoạt tùy chọn "Chạy lệnh như một vỏ đăng nhập" để làm cho nó hoạt động như bình thường.

Dưới đây là bản in bằng tiếng Bồ Đào Nha, nhưng đây là cấu hình tôi đã làm cho nó hoạt động.

Ảnh chụp màn hình


điều này sẽ hoạt động, bởi vì bạn không sử dụng zsh
Alfie
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.