• ベストアンサー

Cシェルでのsymbolic link移動

いつもお世話になっております。 今までbashを使っておりましたが仕事でCシェルを用いなければなならず、その違いに戸惑っております。 lnでシンボリックリンクを作成してcdで移動してcd ../で元に戻ろうとした場合、bashでは呼び出し側に戻るのですが、Cシェルではリンク先の親に戻ってしまいます。 pushd . popd というコマンドも見つけたのですが、毎回うつには少々手間です。 bashと同様、呼び出し側の親ディレクトリにもどる方法をどなたかご存知でしょうか? ご存知の方おられましたらご教授よろしくお願いいたします。

質問者が選んだベストアンサー

  • ベストアンサー
  • ky072
  • ベストアンサー率60% (85/140)
回答No.3

これで解決しませんか。 % set symlinks=ignore % set symlinks=expand .cshrc に書いても良いかもしれません。 ignore と expand は若干動作が違いますが、 お好みの方をお選び下さい。

runjump
質問者

お礼

ありがとうございます! 上記の方法で解決いたしました。 これでこの数か月のイライラからかいけつされそうです。

その他の回答 (2)

  • kmee
  • ベストアンサー率55% (1857/3366)
回答No.2

・cdで移動しないでpushdで移動、popdで戻る ・popdの代りにpushdを使うと、ディレクトリスタックのトップへ移動すると同時にカレントディレクトリがスタックに積まれる。pushdだけで行ったり来たりできる。 ちなみに、bashにもpushd,popdはありますよ。

runjump
質問者

お礼

ご回答ありがとうございます。 やはりpushd,popdを使うしかないのでしょうか。。。 少々なれるのに手こずりそうです。

  • yambejp
  • ベストアンサー率51% (3827/7415)
回答No.1

とりあえず cd - とかは?

runjump
質問者

お礼

ご回答ありがとうございます。 リンク先のディレクトリのサブディレクトリでも作業したりするので、cd -も無理そうです。

関連するQ&A

  • ログインシェルと対話型シェルの区別について

    ログインシェルと対話型シェルの区別について理解していません。  ログインシェルはpsコマンドで見たときに-bashと表示されると書籍にありました。  テキストログイン(init 3)してpsコマンドをうっても-bashになっていません。  ご存知の方、いらっしゃいますでしょうか?

  • Cシェルの制御文について(求むCシェル・マスター)

    Cシェルでとある処理をすることになり、参考資料としてスペシャリストな人の シェルをみせてもらったのですが、ソースを読むこともままなりません(><) 私自身はVisualStudioを使ってCのプログラミングをかなり前にちょろっとやった程度で、 シェルというものをほとんど組んだことがないので、以下の点を教えてください。 if [ほにゃらら] then コマンドをぽちっとな elif [はにゃらら] then コマンド2をぽちっとな else exit fi 上記のような制御文を参考資料の中で多数みるのですが、 "elif"と"fi"が、まったく何者かわかりません。 Cシェルやelifなどで、ぐぐってみましたが、わからず 誰か助けてぇ~って感じです。 また、シェルの勉強サイト(C,Tc,B,Bash)のサイトも ありましたら教えてください。すんませんが、よろしくお願いします。

  • シェルスクリプトの作り方

    OSはVineで、bashシェルです。 シェルスクリプトの作り方ですが、 1.ファイルを作る。 例えば、 #!bin/sh cd tmp このとき、ディレクトリはどこでもいいのでしょうか? 2.権限を付ける。 chmod u+x filename 3.実行 ./filename 他に気をつけることはないでしょうか? 実行すると、 bash: ./filename: bad interpreter: そのようなファイルやディレクトリはありません となってしまって、どうしても実行できません。

  • シェルスクリプトの引数について

    test.sh '*.c' といったコマンドを入力した時に、 シェルスクリプト内で引数$1を受け取ったときに$1='*.c'となるのではなく、 カレントディレクトリ内にある'*.c'の正規表現にマッチするファイルが入ってしまっています。 例)カレントディレクト内にaaa.cファイルbbb.cファイルといったファイルがある時は、 $1=aaa.c bbb.cとなっています。 '*.c'の正規表現自体をシェルスクリプト内で受け取る方法はないのでしょうか? シェルはbashを使用しています。

  • Cシェルプログラムで、あるディレクトリ上にあるファイルサイズが0バイトのものを削除する

    Cシェルプログラムで、あるディレクトリ上にあるファイルサイズが0バイトのものを削除する処理を作りたいのです。どのようなコマンドを使って組んだらよいのでしょうか?

  • msys(cygwin)で、シェルスクリプトのcdが動かないのは何故?

    msys(又はcygwin)で、シェルスクリプトに書いたcdが働きません。その解決方法を伺っても宜しいでしょうか?具体的には、下のような状況です。 [シェルスクリプト内容] #!/bin/bash echo cd前 cd testdir # ↑testdirは既存。コマンドラインから手打ちすると機能する! echo cd後 [実行結果の表示] cd前 : No such file or directory cd後 [環境] ・WinXP + 最新全パッチ適用 ・msysとcygwinをインストール 以上 どうか宜しくお願い致します。

  • シェルスクリプトだと動かない [ -L fileS ] && echo "シンボリックリンクです"

    コマンドライン上で カレントディレクトリにある fileS がシンボリックリンクであるか調べる事ができるか、学習しております。コマンドライン上で [ -L fileS ] && echo "シンボリックリンクです" と打つと、動作する事を確認しました。 しかし、シェルスクリプトで(slink.sh) ======================= #!/bin/sh [ -L fileS ] && echo "シンボリックリンクです" ======================= と、同ディレクトリにスクリプトファイルを作成。 chmod ug+x slink.sh して ./slink.sh と打つと slink.sh: test: 引数が足りません。 と怒られます。 どこがどのように間違っているかわからないので ご教授いただけないでしょうか お願い致します。

  • シェルでチェンジディレクトリを記述する方法

    Linuxのシェルでチェンジディレクトリコマンドcdで単純に目的のディレクトリに 移動するよう、記述しましたが、カレントディレクトリが移動しませんでした。 正しい書き方を教えて下さい。(初心ですがよろしくお願いいたします) cd /tmp/abc

  • シェルスクリプトについて教えてください

    以下のようなフォルダ構成があります。 /var/tmp/組織コード/log このlogディレクトリ配下に0byteのファイルがたくさんあり、それを全て定期的に削除したいと思っています。 また、同ディレクトリにはそれ以外のファイルやフォルダも入っていて、それらは絶対に削除してはいけないものです。 以下のようなコマンドを考えたのですが、なにか懸念される点はあるでしょうか? find /var/tmp/*/log -size 0c -exec rm {} \; いろいろ調べたのですが、Linux系は初心者のため、これで妥当かどうか不安なのです。 環境はSolaris11で、bashです。 「組織コード」の部分を固定値にしてコード数分コマンドを書けば確実だとは思いますが、組織コードが増えたり変わるたびにシェルにもメンテが必要になるので、イマイチだと思っています。 詳しい方、ぜひアドバイスしていただけないでしょうか。 よろしくお願いします。

  • シェルスクリプト内のcdで、カレントディレクトリを変えるには?

    シェルスクリプト内のcdコマンドで、カレントディレクトリを変えるにはどうしたらいいか?をどうか教えて下さい。 MS-DOSのバッチファイル内で"cd XXXXX"と書き実行した時の動作を、UNIX(CygWin)環境でも行いたいです。 が、シェルスクリプトは(サブシェルで動く為)カレントディレクトリが変わってくれません。aliasコマンド等でいろいろ実験しましたが、DOSバッチファイルのように「バッチファイル単体でディレクトリ移動が出来る方法」を探し出せませんでした。 極めて初歩的とは存じますが、どうか宜しくお願い致します。