質問
変更することは可能で現在のディレクトリからスクリプト?
作りたい光のためのディレクトリのナビゲーション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
.
は、現在の環境でスクリプトを評価しますので、それが変更される可能性があります。
回答の読みにくさと複雑すぎることを考慮すると、これが要求者がすべきことだと思います
- そのスクリプトを
PATH
- としてスクリプトを実行します
. scriptname
の .
(ドット) は、スクリプトが子シェルで実行されないようにします。
一緒に上記を置く、エイリアスを作ることができます。
alias your_cmd=". your_cmd"
あなたが大手を書きたくない場合は「」毎回 あなたは、シェル環境にスクリプトを調達したいです、 あなたは、単にそれを覚えてしたくない場合、または実行する必要があります スクリプトが正しく動作するためます。
あなたは別名を試すことができます:
.bashrcファイルにこの行を追加します。
alias p='cd /home/serdar/my_new_folder/path/'
あなたは、コマンドラインで「P」を書くとき、それはディレクトリを変更します。
それは決して親に、その現在の環境上またはその子のそれらの上で動作します。
の目標は、あなたのコマンドを実行する場合: 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。
作業を完了するには次の手順を実行します。
- vi mongobin、ここに次のように入力しました。
cd /Users/jdoe/Desktop/Mongo/db.3.2.1/bin
最初の行として。 chmod 755 mongobin
source mongobin
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}