सूक्ति-टर्मिनल और Zsh: नई टैब / विंडो पर वर्तमान निर्देशिका रखें


12

मैं Zsh के साथ आर्क पर सूक्ति 3.10.1 चला रहा हूं। मैं उस समस्या का सामना कर रहा हूं, जब मैं एक टर्मिनल विंडो से एक नया टैब या विंडो बनाता हूं, यह मेरे घर की डायर के लिए वर्तमान डायर को रीसेट करता है।

मैंने पहले ही यह कोशिश की है: सूक्ति-टर्मिनल: नए टैब में निर्देशिका का ट्रैक रखें , लेकिन यह काम नहीं किया।

मैंने सोचा कि शायद यह मेरी .zshrcफ़ाइल पर कुछ विन्यास हो सकता है , इसलिए, मैंने इसे साफ किया और केवल निम्नलिखित पंक्ति लगाई:

. /etc/profile.d/vte.sh

हालाँकि, यह उम्मीद के मुताबिक काम नहीं किया।

हाँ, यह फ़ाइल मौजूद है और यहाँ इसकी सामग्री है:

# 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

यह वास्तव में मुझे गुस्सा दिला रहा है ...

क्या कोई उपाय है?


2
यह ग्नोम-टर्मिनल से संबंधित है, न कि ज़ीश के लिए। यह एक रिपोर्ट किया गया बग है , हालांकि लिंक के पीछे बग ubuntu-gnome का बग है।
रिस्टो सलमिनन

1
क्या आपने कोशिश की है terminator?
RSFalcon7

हाँ, टर्मिनेटर ठीक काम करता है, लेकिन, उदाहरण के लिए, nautilus-open-terminalएक्सटेंशन हमेशा गनोम-टर्मिनल खोलते हैं, मैं इसे बदलने में सक्षम नहीं रहा हूं ...
हेनरिक्स बारलोसोस

1
बस यह बताना चाहता था कि मुझे अपने आरसी-फाइल में vte.sh की सोर्सिंग के बाद सूक्ति-टर्मिनल को फिर से शुरू करना था। बस इसे बचाने और एक नया टैब / विंडो खोलने से काम नहीं चला .. (bash / arch / gnome3.10 का उपयोग करके)
साइलेंट

जवाबों:


16

मुझे नहीं पता कि आप अभी भी इस मुद्दे पर चल रहे हैं, लेकिन मैंने पाया कि मेरी समस्या यह थी कि मैं अपने टर्मिनल प्रोफ़ाइल में एक कस्टम कमांड के रूप में / बिन / zsh चला रहा था। अक्षम करने से मेरे लिए समस्या ठीक हो गई - और अभी भी मेरे प्राथमिक शेल के रूप में zsh को रखा।

टर्मिनल प्रोफाइल


वास्तव में Fedora के उपयोग से मेरे लिए समस्या हल हो गई, बहुत बहुत धन्यवाद!
स्वेन हैगर

1
बदलने का मतलब है कि zsh के बजाय डिफ़ॉल्ट बैश का उपयोग करना। तो यह कैसे समस्या को ठीक करता है?
अल्फई

@Alfie उपयोगकर्ता अपने डिफ़ॉल्ट शेल (शायद bash) का उपयोग नहीं कर रहा है । इसका मतलब है कि प्रॉम्प्ट (लॉगिन में सेट अप /etc/profile.d/vte.sh) सेट करने के लिए निष्पादित कमांड सही नहीं है और टर्मिनल को शेल की वर्तमान निर्देशिका के बारे में पता नहीं है।
xhienne

स्क्रीनशॉट अब तक नहीं है। दूसरा विकल्प अब मौजूद नहीं है; पहले एक को छेड़ते हुए चाल चली। यह डिफ़ॉल्ट है, लेकिन आपको ZSH को अपने डिफ़ॉल्ट शेल के रूप में सेट करना है chsh, मैं मानता हूं।
slhck

4

ऐसा लगता है जैसे आपको इसे चलाने के लिए "रन कमांड को एक लॉगिन शेल के रूप में" विकल्प को सक्षम करना होगा जैसे इसे काम करना चाहिए।

प्रिंट बोलो पुर्तगाली में है, लेकिन यह विन्यास है जो मुझे काम करने के लिए मिला है।

स्क्रीनशॉट


यह काम करेगा, क्योंकि आप zsh का उपयोग नहीं कर रहे हैं
अल्फी
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.