スペースを含むパスにパス変数cdを使用する

スペースを含むパスにパス変数cdを使用する

.bash_profile私のasで実行されるコマンドのリストを含むファイルがあります。

source my_cmds

たとえば、

$cat my_cmds 
scripts=~/scripts

私が仮定すると、$HOMEプロンプトで実行する/Users/knayakときに私が必要です。
cd $scripts/Users/knayak/scripts

この形式のパス(何らかの理由で名前を変更することはできません)があるので、その変数を使用できるようにコマンド変数を設定する方法がわかりませんcd $path

/Users/knayak/Somedir - some name Inc/Tasks

my_cmds環境変数を設定するために、これらすべてをファイルに追加してみましたtasks

$cat my_cmds 
tasks=~/Somedir - some name Inc/Tasks
tasks="~/Somedir - some name Inc/Tasks"
tasks=~/"Somedir - some name Inc/Tasks"
...

一重引用符を含む多くがありますが、これを行うと、何も機能しないようですcd $tasks。ほとんどはエラーのため失敗します。

cd: "/Users/knayak/Somedir: そのファイルやディレクトリはありません。

このパスを使用するtasks=~/<whatever> には、フォームに正しい値を設定する必要がありますか?cd $tasks

ベストアンサー1

変数拡張を引用してください。

ファイルが次の場合my_cmds

$ cat my_cmds 
tasks=~/"Somedir - some name Inc/Tasks"

ファイルには次./bash_profileのものが含まれます(他の行のうち)。

$ cat ~/.bash_profile
[ -f ~/my_cmds ] && . ~/my_cmds
cd "$tasks" && pwd

~/.bash_profile を実行すると、次のようになります。

$ sh ~/.bash_profile
/Users/knayak/Somedir - some name Inc/Tasks

おすすめ記事