.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