この問題は私が長い間持っています。ターミナル.profileを実行した後、.bashrcファイルは機能しません(実行されません)。どこから問題の原因を探すべきかを示していただけますか?
~/.profile
がなく、実行許可を必要としません。(シェルはそれをソースとし、実行しません)。chmod -x ~/.profile
まだ動作するかどうか試してみてください。
この問題は私が長い間持っています。ターミナル.profileを実行した後、.bashrcファイルは機能しません(実行されません)。どこから問題の原因を探すべきかを示していただけますか?
~/.profile
がなく、実行許可を必要としません。(シェルはそれをソースとし、実行しません)。chmod -x ~/.profile
まだ動作するかどうか試してみてください。
回答:
.profile
実行されていないという問題がありました。(で説明したように、それは結局のところ、このアップルStackExchange答え)あなたが持っている場合ということ.bash_profile
や.bash_login
、ファイル、そしてあなたは、.profile
bashのでは無視されます。
このQ&Aはスーパーユーザーに行くべきだと思いますが、とにかく:
manページのセクションINVOCATIONによると、
/etc/profile
および~/.profile
対話型ログインシェルのために読み込まれ、~/.bashrc
対話型の非ログインシェルについて読み込まれます。他のUNIXマシンが~/.bashrc
対話型ログインシェルであっても自動的に読み取る場合は、システム全体/etc/
profile
にを読み取る行があるためです~/.bashrc
。OS Xのシステム全体に/etc/profile
はありません。
したがって、~/.bashrc
対話型ログインシェルでも実行する場合は、次の行を含める必要があります。
. ~/.bashrc
あなたの~/.profile
。
「手作業」で調達してみてください。
source ~/.profile
そして何が起こるかを見てください。他の人が指摘しているように、.profileはログインシェルから、.bashrcは非ログインシェルから供給されることに注意してください。両方ではなく、どちらかを試してください。
端末の設定で、「スタートアップ」ペインを確認します。次のオプションがあります。
シェルは以下で開きます:
- デフォルトのログインシェル(/ usr / bin / login)
- コマンド(完全なパス)
「デフォルト」を選択しました...カスタムコマンドを選択した場合、それが要因になる可能性があります。
次に確認するポイントは、シェルがログインシェルとして起動されているかどうかです。私が行うとps
リストを、私は以下を参照してください。
PID TTY TIME CMD
24088 ttys000 0:00.03 -sh
24614 ttys001 0:00.03 -sh
25127 ttys002 0:00.05 -sh
35544 ttys003 0:00.08 -sh
40926 ttys004 0:00.03 -sh
ここで重要なの-
は、シェル名の前の「」です。これは、プロファイルと関連するものを実行するようシェルに指示します。現在のウィンドウでそれが表示されない場合は、表示されるまで設定をいじる必要があります。
端末設定の設定ペインには、シェルオプションも一覧表示されます。私は/ bin / shを私のものにリストしています。
最悪の事態が最悪の場合は、過去の他の非協調システムで行ったように実行できます-Windowsから実行できるプログラム 'loginsh'を作成し、選択したシェルを ' -
' で実行しますログインシェルとして機能するように指示するプレフィックス。
#include <string.h>
#include <stdlib.h>
#include <unistd.h>
#include "stderr.h"
#include "jlss.h"
#ifndef DEFAULT_SHELL
#define DEFAULT_SHELL "/bin/sh"
#endif /* DEFAULT_SHELL */
#ifndef MAX_SHELLBASENAME
#define MAX_SHELLBASENAME 256
#endif /* MAX_SHELLBASENAME */
#ifndef lint
static const char sccs[] = "@(#)$Id: loginsh.c,v 4.2 2005/06/22 19:44:07 jleffler Exp $";
#endif
int main(int argc, char **argv)
{
char *shell;
char shellname[MAX_SHELLBASENAME];
err_setarg0(argv[0]);
/* Which shell to use? */
if ((shell = getenv("SHELL")) == (char *)0)
shell = DEFAULT_SHELL;
/* Set up argv[0] in new argument list; reuse old argv space */
shellname[0] = '-';
strcpy(&shellname[1], jlss_basename(shell));
argv[0] = shellname;
/* Execv must work -- the shell must be an executable program */
execv(shell, &argv[0]);
err_syserr("cannot execute shell %s\n", shell);
/* NOTREACHED */
return(EXIT_FAILURE);
}
("stderr.h"
ヘッダーと ' err_*
'ルーチンは、私がどこでも使用するエラー報告パッケージです。jlss_basename()
関数は、POSIXにあるようなシステムが提供するバージョンと基本的に同じ<libgen.h>
です。)
上記の良い情報ですが、私が抱えていた問題と見つけた解決策についていくつかの詳細を共有すると思いました。
必要性:OSX 10.8(ML)のPATHにディレクトリを追加します。
問題:多くの場合、ガイダンスは「ホームディレクトリの.profileを変更する」ことです。デフォルトでは、このファイルはOSX上に存在しないため、少し混乱します。exportディレクトリを追加して新しいディレクトリを既存のPATHに追加すると...が機能しないため、二重に混乱します。上記でカバー。
解決策:export文を.bash_profile(ホームディレクトリ内)に追加しました。
この猫の皮を剥ぐ方法はたくさんあると思います。これは私のために働いた。やや自信を刺激します。.bash_profileはすでに存在しており、インストールされている他のソフトウェア(Rubyなど)によって変更されていることがわかりました。より良い解決策があれば、私はそれについて聞いてうれしいです!