スクリプト内の作業ディレクトリを変更して実行すると、スクリプト内で作業ディレクトリが指定されたパスにのみ変更されます

ダッシュコンロイ

スクリプト内の作業ディレクトリを変更して実行すると、スクリプト内で作業ディレクトリが指定されたパスにのみ変更されます。これが私のスクリプトです:(これは実際にディレクトリが変更されたかどうかを確認するためでした)
#!/bin/bash
cd /media/hard/drive/partitionX/
pwd

実行すると、指定されたパスが返されますが、ターミナルの作業ディレクトリは変更されません。スクリプトを使用してターミナルの作業ディレクトリを変更するにはどうすればよいですか?

user1686

これは正常です。「現在の」または「作業」ディレクトリはプロセスごとのパラメータであり、プロセスは自身の作業ディレクトリのみを変更できます。スタンドアロンスクリプトは、別のシェル・プロセスとして実行されていると(実際には、親が常にいない可能性があり親シェルに影響を与えることができないことがシェル)。

次のようなシェル内部の機能を使用する必要があります。

  • シェル関数:

    mycd() {
        cd /media/hard/drive/partitionX/;
        pwd;
    }
    
  • シェルエイリアス:

    alias mycd='cd /media/hard/drive/partitionX; pwd'
    
  • スクリプトを実行する代わりに「ソース」します。

    . mycd.sh
    

主な目標が特定のディレクトリへのショートカットを作成することである場合は、次を使用することもできます。

  • より便利な場所のシンボリックリンク:

    ln -s /media/hard/drive/partitionX ~/partX
    cd ~/partX
    
  • 変数($ mydir):

    mydir=/media/hard/drive
    cd $mydir
    
  • $ CDPATH機能:

    CDPATH=".:/media/hard/drive"
    cd partitionX
    

この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。

侵害の場合は、連絡してください[email protected]

編集
0

コメントを追加

0

関連記事

Related 関連記事

ホットタグ

アーカイブ