11
votes

Comment puis-je trouver l'emplacement du script TCSH Shell que j'exègre?

dire que je mettais un fichier TCSH exécutable dans /path/to/my_script.csh

et mon répertoire actuel est n'importe où, par exemple je suis dans / chemin p>

donc je tape / my_script .csh p>

Je veux avoir une ligne dans my_script.csh qui retournera "/path/to/my_script.csh" - comme de Ruby's's P>

__FILE__


0 commentaires

4 Réponses :


1
votes
#!/bin/tcsh
echo "I am $0."

1 commentaires

Cela donne le chemin du répertoire actuel au script, pas le chemin absolu.



7
votes

Si vous voulez assurer le même résultat (chemin complet et nom de script), essayez quelque chose comme ceci: xxx

alors vous pouvez l'appeler comme foo.sh ,./foo.sh, Certains / inférieurs / dir / foo.sh et obtiennent toujours le même résultat, peu importe la façon dont il s'appelle.


1 commentaires

Mal shell -_-



11
votes

en coquille C, essayez comme ceci: xxx


3 commentaires

Malheureusement, lorsque je fais cela dans mon script #! / Bin / csh, et exécutez-le avec un chemin relatif (./myscript.csh), il renvoie toujours mon répertoire domestique. Peu importe où je mets ce script. dirname $ 0 est '.' ' et pwd renvoie ma maison $


@ mdiehl13 Le problème que vous avez décrit ne m'arrive pas. Voyez-vous toujours le même problème? Vous aurez peut-être besoin de vérifier votre fichier .cshrc et de voir s'il existe des configurations spéciales relatives au paramètre de chemin de répertoire.


@euccas non, étrange (et bon). Je ne vois plus ce comportement



5
votes

Si vous voulez un chemin absolu, cela devrait vous aider à sortir: xxx

source: http://tipsarea.com/2013/04/11/frow-a-get-the-script-path- Nom-in-cshtcsh /


1 commentaires

Merci de m'avoir sauvé plus de frustration sur la différence de différencie entre la source et un script appelant