
Ubuntu日本語フォーラム

ログインしていません。
最近、ubuntuに乗り換えた初心者です。
Matlabをインストールしたときに題名に書いた場所にショートカットを作るかどうか聞かれて、
Yesを押したら、端末にMatlabと入力するだけで起動できるようになりました。(自分のいる場所に関係なく)
これと同じことを他のソフトでできませんか?
できればその際、ショートカットの名前も自分で決めたいです。
お願いします。
オフライン
lrt57900 による投稿:
最近、ubuntuに乗り換えた初心者です。
Matlabをインストールしたときに題名に書いた場所にショートカットを作るかどうか聞かれて、
Yesを押したら、端末にMatlabと入力するだけで起動できるようになりました。(自分のいる場所に関係なく)
これと同じことを他のソフトでできませんか?
できればその際、ショートカットの名前も自分で決めたいです。
お願いします。
ショートカットというのは(シンボリック)リンクのことという理解でよろしいでしょうか。
Windowsでいうところのショートカットに近いものとしてgnomeのアプリケーションランチャがあるので念のための確認です。
端末でプログラムを起動するのを楽にしようと思うと、いろいろパターンが考えられますが、
1. aliasを定義する
端末でaliasなどとすると現在のaliasの内容が確認できます
gedit ~/.bash_aliases
などとしてファイルを開き、そこにaliasを定義して下さい。
(例)alias w3m='w3m -B'
2. $HOMEにbinディレクトリを作成し、そこにPATHを通し、シンボリックリンクを作成する
mkdir ~/bin echo 'export PATH=$PATH:~/bin' >> ~/.bashrc source ~/.bashrc ln -s /path/to/target ~/bin/link
3. /usr/local/binなどPATHの通った場所にシンボリックリンクを作成する
sudo ln -s /path/to/target /usr/local/bin/link
のような感じになります。
コマンドの名前は変えないのがお勧めですが、どうしても変えたいという場合、注意点がありまして、
a. 他のコマンドなどと名前が被っていないか確認する必要がある。被らないようにする必要がある。
which hoge
とか
hoge
と端末で打ち込むと、hogeが存在する場合に、インストールされている場所や、インストールする際のパッケージ名などが表示されます。
b. ごくまれにコマンドが自分の名前をみて挙動を変えるものがいるかも知れない
昔のgzip, gunzipがそうだったはず。今は違うみたいですが。
もしかしたら、まだどこかにいるかも知れないので、注意はしておいた方がよいです。
オフライン
コマンドを実行するには、普通はパスを指定する必要があります。
しかし、環境変数PATHに登録されているパスに限っては、その指定を省略できます。
このPATHのことを「コマンドサ−チパス」と呼びます。単に「パス」とも言っています。
環境変数PATHを確認するには、上端左にある アプリケ−ション → アクセサリ− → 端末 と
マウスでドラッグすれば、Gnome端末が起動し、端末によるコマンドが打てるようになります。
uname@XXXXX-XXXXX:~$ echo $PATH (Enterキ−)
note: 例) 私の端末での結果です。 当然に、個人的に登録しているパスが違います。
~$ echo $PATH
/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/opt/real/RealPlayer
システムに予め登録されている環境変数PATHに追加登録を行う場合は、次のようにします。
~$ PATH=~/bin:$PATH
note: PATHに「~/bin」を追加、なお「~」の意味はホ−ムディレクトリを示す特別な記号です。
この特別な記号として、他に「/」ル−トディレクトリ、「..」親ディレクトリ、「.」カレントディレクトリが
あります。
さて、ファイルには名前がついていて、本名と別名があり、それぞれ複数持つことができます。
ファイルの本名のことをハ−ドリンク、別名をシンボリックリンクと呼んでいます。
前置きが長くなりました。ここからがトピックの「ショ−トカットでソフトを起動する」への助言です。
シンボリックリンクを活用し、PATHが登録されていることで、ファイルに間接的にアクセスする方法です。
これを行うコマンドが「ln」です。
~$ man ln
note: これでln の説明が提示されます。じっくり読んでください。終了は「q」です。
詳細を述べると、膨大な文書を記載しないといけないので、簡単な説明にします。
Googleにて「シンボリックリンク」等で検索すれば、たくさんの情報が集まると思います。
~$ cd 目的とするコマンド(com_filename)があるファイルへの絶対パス
note: ディレクトリに移行
~$ ls
com_filename
note: ファイルがあるのを確認(リスト)
~$ ln -s com_filename /usr/local/bin/自分で決めた名前
これで登録されますので、起動すると思います。
~$ ls -l 目的とするコマンド(com_filename)があるファイルへの絶対パス/com_filename
~$ ls -F /usr/local/bin
note: ls コマンドにて、確認できます。
オフライン
hmatsue さん による投稿:
2. $HOMEにbinディレクトリを作成し、そこにPATHを通し、シンボリックリンクを作成する
$HOME に bin ディレクトリを作るだけで,PATH を通してくれるようなコードが ~/.profile に既に有ります.
以下は /etc/skel/.profile の一番最後の部分
# set PATH so it includes user's private bin if it exists
if [ -d "$HOME/bin" ] ; then
PATH="$HOME/bin:$PATH"
fiUbuntu 導入以降ずっとこの仕組みを使って独自のコマンドを実行してきました.
あまり知られていないのかな?
オフライン
あ、本当ですね。
ご指摘多謝です。 > einundzwanzighundertsechsさん
前述の、
mkdir ~/bin echo 'export PATH=$PATH:~/bin' >> ~/.bashrc source ~/.bashrc ln -s /path/to/target ~/bin/link
は
mkdir ~/bin source ~/.profile ln -s /path/to/target ~/bin/link
に訂正します。
# SUB機の方でPATHに~/binが入っていなかったので手動設定しなくちゃと思ってしまったのですが、
# MAIN機の方でみたら、~/.profile以外には~/binにPATH通す設定無しで~/bin以下に置いた
# スクリプト類を実行している自分を発見しました(笑)
# ~/binが存在するときだけPATHに追加されるようになっているんでしたね。。
オフライン
こんばんわ。
たくさんの返事ありがとうございます。
自分の質問が不確かだったと思います。
すこし、シンボリックリンクも見てみたのですが、探している回答と違う気がします。(何しろそれさえもなかなか判断つきにくいです)
例えば,Matlabを起動したいときに以下のコマンドを入力すると、自分のいるディレクトリに関係なくソフトを起動できます。
user@user-laptop:~$ matlab
これと同じようなことを他のソフトでしたいです。
wineでwindowsのソフトを使ってるのですが、それを起動するときに、例えば:
user@user-laptop:~$ mt
という自分でつけた元は"Mathtyp"というソフトを端末を通して起動させたいのです。
どのようにすれば可能ですか?
オフライン
alias mt='wine ~/.wine/drive_c/Program\ Files/path/to/Mathtyp'
みたいな感じでaliasを設定するのでいかがでしょう。
Pathはそちらの環境に合わせて修正して下さい。
オフライン
ごめんなさい。確認漏れがありました。
mt
は
/bin/mt
として、存在するので違う名前にして下さい。
オフライン
今日は。
ありがとうございます。自分の望んだ結果が出ました。
この命令はaliasというのですね。
勉強になりました。
どうもでした。
オフライン