জিনোম-টার্মিনাল: নতুন ট্যাবে ডিরেক্টরি ট্র্যাক করুন


37

আমি আর্চ লিনাক্সে আছি এবং যখন আমি একটি নতুন টার্মিনাল ট্যাব খুলি, এটি সর্বদা যায় $HOME। আমি কীভাবে এটি তৈরি করতে পারি যাতে আমি যখন একটি নতুন ট্যাব খুলি, এটি আমার আগে ডিরেক্টরিতে থাকা ডিরেক্টরিতে শেলটি খোলে?

উত্তর:


49

এই সমস্যা সম্পর্কিত একটি বাগ আছে

আপনাকে যা করতে হবে তা হ'ল নীচের লাইনটি আপনার .bashrcবা .zshrc:

. /etc/profile.d/vte.sh

কমপক্ষে আর্কে, স্ক্রিপ্টটি আপনি বাশ বা জেডএস চালাচ্ছেন কিনা তা পরীক্ষা করে এবং আপনি না থাকলে প্রস্থান করে।


1
এটি লক্ষ করা উচিত যে এটির কোনও প্রভাব থাকতে পারে, যদি এটি পরে যুক্ত না করা হয় export PROMPT_COMMAND=..., যদি আপনার মধ্যে ইতিমধ্যে এটি বিদ্যমান থাকে .bashrc
সোয়াগল

2
/etc/profile.d/vte.shPROMPT_COMMANDভেরিয়েবলকে ওভাররাইড করে । এটি ঠিক করার জন্য, আপনি সংশোধন করতে পারেন vte.sh, এবং অংশটি পরিবর্তন করতে PROMPT_COMMAND="__vte_prompt_command"পারেনPROMPT_COMMAND="${PROMPT_COMMAND};__vte_prompt_command"
স্লোগাল করুন

2
আমি এটিকে সঠিক জায়গায় রাখার বিষয়ে সতর্কতা অবলম্বন করেছি, স্ক্রিপ্টটি উপস্থিত আছে কিনা তা পরীক্ষা করুন ইত্যাদি, তবে এটির পছন্দসই প্রভাব নেই। আমি জিনোম টার্মিনাল 3.18.1 এর সাথে 4.2.3-1-ARCH চালাচ্ছি। কোন পরামর্শ?
জ্যাক সেনাচাল

আমার সাথে এটি যুক্ত করার সময় এটি zsh এর জন্য আমার পক্ষে কাজ করে না .zshrc। আমি ওহ-মাই-জেডএস ব্যবহার করছি, এটি সম্পর্কিত কিনা তা নিশ্চিত নই।
আন্দ্রেয়াস মুলার

1
আমি ওহ-মাই-জিএসএস ব্যবহার করছি। আমি বেশিরভাগ কয়েক সপ্তাহ হিসাবে খিলানটিতে আপ টু ডেট করেছি। তুলনা করতে আমার ডটফিলসের
korylprince

7

পাশাপাশি crosspost পারে এই সুপার-ইউজার থেকে হল hacky সমাধান:

[এটি] প্রতিটি কমান্ডের পরে একটি ফাইলের মধ্যে বর্তমান ফোল্ডারটি সংরক্ষণ করে (খুব বেশি আইএমও ক্ষতি করে না) এবং সেভ করা বর্তমান ফোল্ডারে একটি নতুন টার্মিনাল খোলে।

.zshrc [বা .bashrc ] এ নিম্নলিখিতগুলি যুক্ত করুন

# emulate bash PROMPT_COMMAND (only for zsh)
precmd() { eval "$PROMPT_COMMAND" }
# open new terminal in same dir
PROMPT_COMMAND='pwd > "${HOME}/.cwd"'
[[ -f "${HOME}/.cwd" ]] && cd "$(< ${HOME}/.cwd)"

মনে রাখবেন যে নতুন উইন্ডো খোলার সময় এটি আপনাকে সর্বশেষ-ব্যবহৃত ডিরেক্টরিতেও রেখে দেবে ।


আমার জন্য দুর্দান্ত কাজ করেছেন সলাস লিনাক্স, জিনোম-টার্মিনাল এবং zshell।
পিস্পারো

আমার জন্যও দুর্দান্ত কাজ করে, আমি ডিফল্ট এলিমেন্টারি ওএস 0.4.1 লোকি টার্মিনালটি ব্যবহার করছি, ধন্যবাদ।
রাফায়েল বেরো

0

@ সওয়ালোগ আমাকে তার মন্তব্যেvte.sh অনুপ্রেরণা ও টার্মিনাল শিরোনামটি সংশোধন না করে সেই সময়ের সমস্ত অপ্রয়োজনীয় অংশগুলি সরিয়ে দেওয়ার জন্য অনুপ্রেরণা জাগিয়েছিলেন । নোট করুন যে আমি ব্যবহার করি না zsh, তাই আমি zshসম্পর্কিত সম্পর্কিত কোডটি সরিয়েছি ।

# 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, see <http://www.gnu.org/licenses/>.

# 28 Sep 2019: Tukusej’s Sirs modified this by stripping down all unnecessary parts for his usage
# (src: https://unix.stackexchange.com/questions/93476/gnome-terminal-keep-track-of-directory-in-new-tab#comment219157_93477)

# 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
)

__vte_prompt_command() {
    local command=$(HISTTIMEFORMAT= history 1 | sed 's/^ *[0-9]\+ *//')
    command="${command//;/ }"
    local pwd='~'
    printf "\033]7;file://%s%s\007" "${HOSTNAME:-}" "$(__vte_urlencode "${PWD}")"
}

case "$TERM" in
    xterm*|vte*)
        [ -n "$BASH_VERSION" ] && PROMPT_COMMAND="${PROMPT_COMMAND};__vte_prompt_command"
        ;;
esac
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.