ホーム ディレクトリ (/home/user) にシェル スクリプトを作成 (および実行) したいと考えています。
以下を試しました:
printf "cd /mypath\n" > myShortcut.sh
chmod +x myShortcut.sh
sh myShortcut.sh
どこが間違っているのですか?
(別のディレクトリに移動するためのショートカットを設定しようとしています)
ここで正確に何が間違っていますか?スクリプトの実行後もまだ /home/user にいるということですか? スクリプトを実行すると、スクリプトが終了すると親シェルに戻る子シェルが作成されるためです。したがって、あなたの cd は現在のシェルでは何の効果もありません。
(サブシェルではなく)現在のシェルでスクリプトを実行する場合は、 (または) コマンドを使用します。source
.
source myShortcut.sh
これにより、期待どおりにディレクトリが変更されます。
さらに、ソースを使用すると、現在のシェルで環境変数を設定および変更することもできます。これは、それ自体で非常によくある質問です:-)
他の答えが言っているので、それはうまくいきません。スクリプトは子シェルで動作します。
そのようなショートカットの場合、エイリアスを設定し、ホーム ディレクトリの .bashrc ファイルを編集して、次のような行を追加できます。
エイリアス ショートカット ='cd /mypath'
名前を付けたいものに「ショートカット」を置き換え、必要なパスに mypath を置き換えます。シェルを再起動すると(ターミナルを閉じて再度開くか、w / e)、必要に応じて機能するはずです。次に、シェル内の任意の場所で「ショートカット」を使用できます。