wslでbashスクリプトを学習するために、nanoでDesktop.shとして保存するための次のスクリプトを作成しました。
#!/bin/bash
cd /mnt/c/Users/myusername/Onedrive/Desktop
シェルでbash Desktop.shと入力すると
何も起こりません
アドバイスがあれば助かります
答え1
コマンドで呼び出したスクリプトはbash Desktop.sh
完全に動作しましたが、効果は見られません。
なぜ?
スクリプトはサブシェルで実行されるためです。
スクリプトを実行するとbash Desktop.sh
サブシェルが起動し、サブシェル内で任意のコマンドが実行されます。したがって、現在のディレクトリはサブシェル内でのみ変更されます。スクリプトが停止すると、何も変更されていないシェルに戻ります。スクリプトを実行可能にした場合も同じことが起こり、パス名を入力してスクリプトを実行します。その場合、#!/bin/bash
どのシェルをロードするかを決定するためにシェバン ( ) が読み取られます。
に見る効果を得るには、代わりcd
に現在シェル。これを行うには調達スクリプト:
source Desktop.sh
またはショートカット表記:
. Desktop.sh
これで、プロンプトにスクリプト内のコマンドを自分で入力した場合と同じ効果が得られます。