ක්‍රියාත්මක කළ හැකි මාර්ග සඳහා බාෂ්ගේ හැඹිලිය ඉවත් කරන්නේ කෙසේද?


279

ක්‍රියාත්මක කළ හැකි සම්පූර්ණ මාර්ගය නියම නොකර මම වැඩසටහනක් ක්‍රියාත්මක කරන විට, සහ $PATHද්විමය සොයා ගැනීම සඳහා බාෂ් විසින් නාමාවලි සෙවිය යුතු විට, බාෂ් යම් ආකාරයක හැඹිලියක මාර්ගය සිහිපත් කරන බව පෙනේ. උදාහරණයක් ලෙස, මම මූලාශ්‍රයේ සිට උපසිරැසි සෑදීම ස්ථාපනය කර /usr/local, පසුව svnsync helpබෑෂ් විමසුමේ ටයිප් කළෙමි . බාෂ් /usr/local/bin/svnsync"svnsync" සඳහා ද්විමය පිහිටුවා එය ක්‍රියාත්මක කළේය. පසුව මම උපසිරැසි ස්ථාපනය මකා දමා /usr/localනැවත ධාවනය කළ විට svnsync help, බාෂ් ප්‍රතිචාර දක්වයි:

bash: /usr/local/bin/svnsync: No such file or directory

නමුත්, මම Bash හි නව අවස්ථාවක් ආරම්භ කරන විට, එය සොයාගෙන ක්‍රියාත්මක කරයි /usr/bin/svnsync.

ක්‍රියාත්මක කළ හැකි මාර්ගවල හැඹිලිය ඉවත් කරන්නේ කෙසේද?


13
මෝඩම ලක්ෂණය
රොමේනෝ

බෑෂ් හැඹිලි කාර් අනතුර?
davey

Answers:


351

bashවිධානයකට සම්පූර්ණ මාර්ගය හැඹිලිය කරයි. ඔබ ක්‍රියාත්මක කිරීමට උත්සාහ කරන typeවිධානය විධානය සමඟ හෑෂ් කර ඇති බව ඔබට තහවුරු කළ හැකිය :

$ type svnsync
svnsync is hashed (/usr/local/bin/svnsync)

සම්පූර්ණ හැඹිලිය ඉවත් කිරීමට:

$ hash -r

නැතහොත් එක් ප්‍රවේශයක් පමණි:

$ hash -d svnsync

අමතර තොරතුරු සඳහා, උපදෙස් help hashසහ man bash.


17
An ඩැනියෙල් එකතු කිරීම වටී, බාෂ් වලදී, ඔබට එය කුමන වර්ගයේ විධානයක් දැයි දැන ගැනීමට "type command " විධානය භාවිතා කළ හැකිය - ඔබේ විධානය හැෂ් කර ඇත්නම්, "type" ඔබට කියනු ඇත. යමක් ෂෙල් බිල්ඩින් හෝ අන්වර්ථයක් දැයි පැවසීම ද ප්‍රයෝජනවත් වේ.
lunchmeat317

4
FYI ලෙස, හැඹිලි PATH ධාවනය වන්නේ නම් වෙනස් කිරීමට csh, විධානය වේ rehash.
kurtm

ඉහත rehashවිධානය ද ක්‍රියාත්මක වේ zsh.
නීල් ට්‍රැෆ්ට්

4
එක් විධානයක් තුළ වරණීය නැවත සකස් කිරීම මඟින් ආයාචනා කළ හැකිය hash svnsync.
අයොනිස් ෆිලිපිඩිස්

1
මම සොයාගත්තා ඒ dashවෙනුවට දුවනවා bash- dash hash -dවැඩ කරන්නේ නැති නිසා; hash svnsyncකෙසේ වෙතත් දෙකම සඳහා ක්රියා කරයි.
ඉරිඩේන්

27

එක් ප්‍රවේශයක් පමණක් ඉවත් කිරීමට ඔබට වෙනත් ධජයක් අවශ්‍ය වේ:

hash -d svnsync

මෙම -rධජය පරාමිතිය ගත වන්නේ නැත හා සෑම විටම සමස්ත හැඹිලි මකා ඇත.
(අවම වශයෙන් ඩෙබියන් ලෙනී මත 3.2.39 බැෂ් වලින්)


25

මෙහි සඳහන් නොවන විසඳුම් තිබේ.

  1. ඔබට set +hහෝ සමඟ හැෂිං අක්‍රීය කළ හැකියset +o hashall

    help set පවසයි:

    -h - ක්‍රියාත්මක කිරීම සඳහා විධාන දෙස බලන විට පිහිටීම මතක තබා ගන්න. මෙය පෙරනිමියෙන් සක්‍රීය කර ඇත.

    hashall - -h හා සමානයි

    set -h # enable hashing
    shopt -u checkhash # disable command existence check
    hash -p /some/nonexisting/dir/date date # bind date with /some/nonexisting/dir/date
    date # bash: /some/nonexisting/dir/date: No such file or directory
    set +h
    date # normal date output
  2. එය ක්‍රියාත්මක කිරීමට පෙර හැෂ් වගුවේ ඇති විධානයක් තිබේදැයි ඔබට පරීක්ෂා කළ හැකිය shopt -s checkhash

    help shopt පවසයි:

    checkhash - සකසා ඇත්නම්, එය ක්‍රියාත්මක කිරීමට පෙර හැෂ් වගුවේ ඇති විධානයක් තිබේදැයි පරීක්ෂා කරන්න. හෑෂ් විධානයක් තවදුරටත් නොපවතී නම්, සාමාන්‍ය මාර්ග සෙවීමක් සිදු කරයි.

    set -h # enable hashing
    shopt -u checkhash # disable command existence check
    hash -p /some/nonexisting/dir/date date # bind date with /some/nonexisting/dir/date
    hash -t date # prints /some/nonexisting/dir/date
    date # bash: /some/nonexisting/dir/date: No such file or directory
    shopt -s checkhash # enable command existence check
    date # normal date output
    hash -t date # prints /bin/date
  3. ඔබට PAMH සමඟ NAME බන්ධනය කළ හැකිය hash -p PATH NAMEහෝ BASH_CMDS[NAME]=PATH:

    shopt -u checkhash # disable command existence check
    hash -p /some/nonexisting/dir/date date
    date # bash: /some/nonexisting/dir/date: No such file or directory
    BASH_CMDS[date]=/bin/date
    date # normal date output
  4. මැජික්: PATH="$PATH"ඉටු කරයිhash -r

    සිට variables.c:

    /* What to do just after the PATH variable has changed. */
    void
    sv_path (name)
        char *name;
    {
        /* hash -r */
        phash_flush ();
    }

    උත්සාහ කරන්න:

    set -h
    hash -r
    date
    hash # prints 1 /bin/date
    PATH="$PATH"
    hash # prints hash: hash table empty

1
PATH = $ PATH හොඳින් ක්‍රියාත්මක වන විට සියලු අමතර යාන්ත්‍රණයන් සපයන්නේ මන්දැයි මම කවදාවත් තේරුම් ගෙන නැත. PATH වෙනස් වුවහොත්, PATH බැලීමේ හැඹිලිය අවලංගු කළ යුතුය. තේරුමක් ඇති කරයි.
jrw32982 මොනිකා

ක්‍රියාත්මක කළ හැකි ස්ථාන වෙනස් වන විට PATH වෙනස් වන විට හැඹිලිය අවලංගු කිරීමෙන් භාවිත නඩුව හසුරුවනු නොලැබේ. වැඩසටහන් එකතු කිරීමට හෝ ඉවත් කිරීමට ඔබ කවචය භාවිතා කරන විට මෙය පොදු විය හැකිය, එය සොයාගත් අවසන් ස්ථානය එය හැඹිලිගත කිරීමට පමණි.
ආදම්

විධාන හැෂ් වගුව සමඟ අවුල් කිරීම, බාෂ් ස්ක්‍රිප්ට් එකක් නිදොස් කිරීමට උත්සාහ කරන අයෙකු ව්‍යාකූල කිරීමට අපූරු ක්‍රමයකි.
එරික් ඇරොනෙස්ටි

5

පරිශීලක ලෙස johntex වෙත අදහස් දී සඳහන් කර ඇත පිළිතුර පරිශීලකයා විසින් Tobu , බෑෂ් දී ඉතා සරළ ප්රායෝගික පියවර ඔබගේ වැඩසටහන රිවිකිරණ වන්නේ:

hash svnsync

එච්චරයි.

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.