「HOME」変数を変更しましたが、「〜/ .bash_profile」が見つからないので元に戻せません


15

Macで環境変数をいじって、それらの使用方法を学ぼうとして、コマンドを使用してからnano ~/.bash_profileHOME=/Users/MyCompName/Desktopを追加してホーム変数を更新しました。

この変更は機能し、printenvすべての環境変数を表示するときに使用できますが、変更をHOME元に戻すと、~/.bash_profileもう見つけることができなかったようです。どこに行ったの?


9
基本的に~$HOME
el.pescado

6
...したがって、再定義すると$HOME~再定義されます
-el.pescado

回答:


32

同じ場所にあります。

変更~がのようなものに展開する前/Users/YourUserNameに、シェルは.bash_profileそこを見つけます。ファイルのソースが取得さ~れると、別のパスに展開されるため~/.bash_profile、関連ファイルを指すことはなくなります。これは、このコンテキストで~はを意味するため$HOMEです。

実際のホームディレクトリへのフルパスがわかっている場合は、の代わりにそれを使用できます~。Macでは、おそらく次のようになります。

nano /Users/YourUserName/.bash_profile

または、単にBashを見るのではなく、ユーザーデータベースでホームディレクトリを検索させます$HOME。これは何も覚えておく必要はありません:

nano ~YourUserName/.bash_profile

あなたの変更HOMEあなたの実際のホームディレクトリを変更せずに、変数は最高のアイデアではありません。ユーザーのホームディレクトリの変更は管理タスクであり、通常のユーザーはこれを行うことができません。


すごい、また見つけました。ありがとう!「ファイルが取得された後」とはどういう意味かを詳しく説明してもらえますか?ファイルのソースを取得することの意味に慣れていない
マット

6
@Mattに.bash_profileはBashスクリプトの形式があります。スクリプトを実行するか、ソースにすることができます。実行とは、サブシェルを作成し、そこでスクリプトを1行ずつ実行することを意味します。ソーシングとは、現在のシェルでスクリプトを実行することです。現在のシェルに影響を与えることを目的とする一部のタスクは、サブシェルでは実行できません。現在のシェルの変数を変更することもその1つです。これが、一部のファイルがサブシェルで実行されるのではなく、ソースとなる理由です。手動でソースファイル使用する. file.POSIXによって指定される)、またはsource filesource非POSIX拡張は数シェルによって理解されます)。
カミルマシオロウスキ


2
ホームディレクトリがどこにあるかわからない場合は、nano ~YourUserName/.bash_profile代わりに使用できます。これは、$ HOMEを見るだけでなく、ユーザーデータベースでホームディレクトリを検索します。
スティグヘメル

1
@StigHemmer現在、答えはコミュニティWikiです。あなたの役に立つコメントが同化されました。ありがとうございました。
カミルマシオロウスキ
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.