2010-03-20 5 views
0

Chaque fois que j'ouvre un shell Bash, mon classpath est "someProgram". Je sais que l'ajout d'une entrée d'exportation à ".bashrc" change mon classpath, mais je veux savoir "someProgram" est ajouté au classpath (ce n'est pas dans ".bashrc").Où est défini mon classpath?

Existe-t-il un moyen de retrouver où est-ce que cela est en train de se faire, ou des endroits typiques que je devrais vérifier en plus de ".bashrc"?

Détails:

J'utilise Ubuntu 9.10.

La version Eclipse: 3.5.1 est installée.

echo $SHELL 
/bin/bash 

java -version 
java version "1.6.0_0" 
OpenJDK Runtime Environment (IcedTea6 1.6.1) (6b16-1.6.1-3ubuntu1) 
OpenJDK Server VM (build 14.0-b16, mixed mode) 

javac -version 
javac 1.6.0_15 

Plus de détails si nécessaire.

vérifié:

  • ~/.bashrc
  • /etc/profile
  • /etc/profile.d/*
  • ~/.bash_profile (non présent)
  • ~/.bash_login (absent)
  • ~/.profile
  • /etc/bash .bashrc

Trouvé!

/etc/environnement

Répondre

1

Ah oui, le processus whackamole de trouver quel fichier de démarrage est source où.Je propose brute force, essayer:

$ grep CLASSPATH .?* 
$ grep -r CLASSPATH --binary-files=without-match /etc/ 2>/dev/null 
+0

"En cas de doute, utilisez la force brute." ~ Butler Lampson. Merci pour la bonne suggestion, wds: Je vais essayer bientôt, et Stephen aussi. (Je suis programmeur par métier, donc je n'ai pas envie de déboguer quand je rentre à la maison, mais j'apprécie l'aide de tout le monde.) – DavidS

+0

C'était dans/etc/environment. Belle grepping, wds! – DavidS

+0

Nous sommes programmeurs pour une raison, n'est-ce pas? :-) Content que je puisse être utile. – wds

1

dans le fichier/etc/profile.

+0

Merci pour la suggestion. J'ai vérifié le fichier "/ etc/profile" et les fichiers dans "/etc/profile.d", mais le classpath n'y est pas changé. – DavidS

1

La réponse dépend de l'endroit où bash lit le profil. Une réponse bien expliquée est here. Un extrait:


Lorsque bash est invoqué comme une coquille de connexion interactive, ou comme une enveloppe non interactif avec l'option --login, il lit et exécute les commandes d'abord à partir du fichier/etc/profile, si ce le fichier existe. Après avoir lu ce fichier, il recherche ~/.bash_profile, ~/.bash_login et ~/.profile, dans cet ordre, et lit et exécute les commandes du premier qui existe et est lisible. L'option --noprofile peut être utilisée lorsque le shell est démarré pour inhiber ce comportement. ... Lorsqu'un shell interactif qui n'est pas un shell de connexion est démarré, bash lit et exécute les commandes depuis /etc/bash.bashrc et ~/.bashrc, si ces fichiers existent. Cela peut être inhibé en utilisant l'option --norc. L'option --rcfile file forcera bash à lire et à exécuter des commandes depuis le fichier au lieu de /etc/bash.bashrc et ~/.bashrc.


+0

Merci, Amit. J'ai vérifié les fichiers listés dans l'extrait, mais le classpath n'était pas modifié dans ces fichiers. – DavidS

1

Revérifier tous ces fichiers pour voir s'ils source d'autres fichiers à l'aide du « . » commande interne.

+0

Merci pour la suggestion, Stephen. Je vais vérifier quand je rentre à la maison ce soir. – DavidS

Questions connexes