質問

変更することは可能で現在のディレクトリからスクリプト?

作りたい光のためのディレクトリのナビゲーションBash.私が作成した試験スクリプトとは、以下に示すようになります:

#!/bin/bash
cd /home/artemb

私はスクリプトを実行すから、Bashシェルの現在のディレクトリからご利用いただけます。できる全ての変更は、現在のシェルディレクトリからスクリプト?

役に立ちましたか?

解決

あなたは、シェル関数にスクリプトを変換する必要があります:

#!/bin/bash
#
# this script should not be run directly,
# instead you need to source it from your .bashrc,
# by adding this line:
#   . ~/bin/myprog.sh
#

function myprog() {
  A=$1
  B=$2
  echo "aaa ${A} bbb ${B} ccc"
  cd /proc
}

その理由は、各プロセスが独自のカレントディレクトリを持っているということです、そしてあなたは、シェルからプログラムを実行したときには、新しいプロセスで実行されます。彼らはシェルプロセスに影響を与えるように、標準の「CD」、「のpushd」と「POPDは、」シェルインタプリタに組み込まれております。

あなたのプログラムシェル関数にすることで、独自のプロセス内のコマンドを追加しているし、任意のディレクトリ変更は、シェルプロセスに反映されます。

他のヒント

あなたのスクリプトを起動すると、

、新しいプロセスは、あなたの環境を継承していることが作成されます。それが終了すると、それが終了します。あなたの現在の環境がそのままとどまるます。

その代わり、あなたがこのようにスクリプトを起動することができます:

. myscript.sh

.は、現在の環境でスクリプトを評価しますので、それが変更される可能性があります。

回答の読みにくさと複雑すぎることを考慮すると、これが要求者がすべきことだと思います

  1. そのスクリプトを PATH
  2. としてスクリプトを実行します . scriptname

. (ドット) は、スクリプトが子シェルで実行されないようにします。

一緒に上記を置く、エイリアスを作ることができます。

alias your_cmd=". your_cmd"

あなたが大手を書きたくない場合は「」毎回 あなたは、シェル環境にスクリプトを調達したいです、 あなたは、単にそれを覚えてしたくない場合、または実行する必要があります スクリプトが正しく動作するためます。

もしbashを使用している場合は、

あなたは別名を試すことができます:

.bashrcファイルにこの行を追加します。

alias p='cd /home/serdar/my_new_folder/path/'

あなたは、コマンドラインで「P」を書くとき、それはディレクトリを変更します。

あなたはbashスクリプトを実行する場合は、

それは決して親に、その現在の環境上またはその子のそれらの上で動作します。

の目標は、あなたのコマンドを実行する場合: goto.sh /ホーム/テスト 次に、/ホーム/テストで対話的に働く一つの方法は、スクリプト内のbashインタラクティブなサブシェルを実行することです。

#!/bin/bash
cd $1
exec bash
このシェルのあなたが(出口またはCtrl + C)を終了するまで、あなたが/ホーム/テストになります。

この道ます。

プッシュされた 現在のディレクトリがディレクトリ スタックにプッシュされ、指定されたディレクトリに変更されます。 ポップ スタックの最上位にあるディレクトリを取得し、そこに変更します。

pushd ../new/dir > /dev/null
# do something in ../new/dir
popd > /dev/null

単に

にアクセスしてください
yourusername/.bashrc (or yourusername/.bash_profile on MAC) by an editor

と最後の行に次のコードを追加します:

alias yourcommand="cd /the_path_you_wish"

次に、エディタを終了します。

次に入力します:

source ~/.bashrc or source ~/.bash_profile on MAC.

今あなたが使用することができます。のyourcommand のターミナルに

私は、ディレクトリを変更するスクリプトを作りました。見てみましょう: https://github.com/ygpark/djする

基本的に私たちが使っているのは cd.. すべてのディレクトリから戻ってきます。一度に戻る必要があるディレクトリの数を指定することで、より簡単にできるようにしようと考えました。これは、alias コマンドを使用して別のスクリプト ファイルを使用して実装できます。例えば:

コード.sh

#!/bin/sh
 _backfunc(){
 if [ "$1" -eq 1 ]; then
  cd ..
 elif [ "$1" -eq 2 ]; then
  cd ../..
 elif [ "$1" -eq 3 ]; then
  cd ../../..
 elif [ "$1" -eq 4 ]; then
  cd ../../../..
 elif ["$1" -eq 10]; then
  cd /home/arun/Documents/work
 fi
 }
alias back='_backfunc'   

使用後 source code.sh 現在のシェルでは次のように使用できます。

$back 2 

現在のディレクトリから 2 ステップ戻ります。以上詳しく説明しました ここ. 。また、そこでは、コードを ~/.bashrc に配置して、開かれたすべての新しいシェルにこの新しいエイリアス コマンドが自動的に設定されるようにする方法についても説明されています。さらにコードを追加してコードを変更することで、特定のディレクトリに移動する新しいコマンドを追加できます。 if conditions そしてさまざまな議論。git からコードをプルすることもできます ここ.

このアプローチの方が私にとっては簡単です。

あなたが管理者である個人用 iMac で、コマンド ウィンドウを開いたときのデフォルト ディレクトリ /Users/jdoe の下にあると仮定すると、これが移動先ディレクトリになります。/Users/jdoe/Desktop/Mongo/db.3.2.1/bin。

作業を完了するには次の手順を実行します。

  1. vi mongobin、ここに次のように入力しました。cd /Users/jdoe/Desktop/Mongo/db.3.2.1/bin 最初の行として。
  2. chmod 755 mongobin
  3. source mongobin
  4. pwd

出来上がり!

私も作用という ヤギ この用途に利用できます。

示できるソースコード GitHub.

としての .phpがv2で増えたファイルです。3.1ご利用の概要 以下のようなものです:

# Create a link (h4xdir) to a directory:
goat h4xdir ~/Documents/dev

# Follow a link to change a directory:
cd h4xdir

# Follow a link (and don't stop there!):
cd h4xdir/awesome-project

# Go up the filesystem tree with '...' (same as `cd ../../`):
cd ...

# List all your links:
goat list

# Delete a link (or more):
goat delete h4xdir lojban

# Delete all the links which point to directories with the given prefix:
goat deleteprefix $HOME/Documents

# Delete all saved links:
goat nuke

# Delete broken links:
goat fix

私は新しいシェルを発射することなく、さまざまなプロジェクトのために同じことをしたいです。

あなたの場合:

cd /home/artemb

としてthe_script保存

echo cd /home/artemb

その後でそれを起動します:

\`./the_script\`

そして、あなたは同じシェルを使用してディレクトリを取得ます。

あなたのシェルスクリプトのCD線の下にこれを追加します。

exec $SHELL

パスを宣言します。

PATH='/home/artemb'     
cd ${PATH}
ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top