シェルスクリプトでよく使うパスの「エイリアス」を作ってみました。私は何かを試しましたが、失敗しました:
myFold="~/Files/Scripts/Main"
cd myFold
bash: cd: myFold: No such file or directory
どうすれば機能しますか?
ただし、cd ~/Files/Scripts/Main
動作します。
シェルオプションがありますcdable_vars
:
cdable_vars
これが設定されている場合cd
、ディレクトリではない組み込みコマンドへの引数は、値が変更先のディレクトリである変数の名前であると見なされます。
これをに追加できます.bashrc
:
shopt -s cdable_vars
export myFold=$HOME/Files/Scripts/Main
$HOME
チルダを;に置き換えたことに注意してください。引用符はチルダの展開を妨げ、Bash はディレクトリがないと文句を言い~/Files/Scripts/Main
ます。
これで、次のように使用できます。
cd myFold
必要ありません$
。実際、それが要点です。他の回答に示されているようにcd "$myFold"
、シェルオプションなしで機能します。cd myFold
のパスにmyFold
スペースが含まれている場合にも機能します。引用符は必要ありません。
これは通常、 が設定されているかどうかをチェックする_cd
関数としてタブのオートコンプリートでも機能しますが、すべての実装が同じ方法でそれを行うわけではないため、シェル オプションを設定するために編集する必要がある場合があります。bash_completion
cdable_vars
bash_completion
.bashrc
/etc/profile
Zsh ( ) など、他のシェルにも同様のオプションがありますcdablevars
。
bash のハッシュテーブルに任意のパスを追加できます。
hash -d <CustomName>=<RealPath>
これで、できるようになりcd ~<CustomName>
ます。永続的にするには、bashrcスクリプトに追加します。
このハッシュテーブルは、コマンドが実行されるたびにコンテンツを検索する必要がないように、bash にキャッシュを提供することを意図していることに注意してください。したがって、このテーブルは、キャッシュを無効にするイベント (変更など) でクリアされます$PATH
。
$
まず、質問のコードを機能させるには、「myFold」の値にアクセスする必要があります。
cd "$myFold"
これを簡単にするために、次のようにエイリアスを作成します~/.bashrc
。
alias cdmain='cd ~/Files/Scripts/Main'
.bashrc
エイリアスを現在の bash セッションで使用できるようにするために、一度ソースを作成することを忘れないでください。
source ~/.bashrc
これで、次を使用してフォルダーに変更できます。
cdmain
もう 1 つのオプションは、シンボリック リンクを使用することです。すなわち:
ln -s ~/Files/Scripts/Main ~/myFold
その後、次のような操作を に対して実行できます~/myFold
。
cp some_file.txt ~/myFold
これにより、ファイルが に配置されます~/Files/Scripts/Main
。でいつでもシンボリック リンクを削除できますrm ~/myFold
。これにより、元のディレクトリが保持されます。