bash - os x 执行创建软链接命令ln -s ,创建的软链接在哪个文件里?
问题描述
在配置安装codecept时,要配置codecept
命令.
首先我用了一个方法:
sudo vim ~/.bash_profile
,添加alias codecept='/Users/yuan/.composer/vendor/bin/codecept'
source ~/.bash_profile
但是执行codecept run
,提示我,bash: codecept: command not found
但是执行alias
,可以看到终端打印出alias codecept='/Users/yuan/.composer/vendor/bin/codecept'
之后,我找到了一个办法,执行sudo ln -s ~/.composer/vendor/bin/codecept /usr/local/bin/codecept
再次执行codecept run
可以正常使用codecept
命令了。
此时,我删除之前在~/.bash_profile
中添加的alias codecept='/Users/yuan/.composer/vendor/bin/codecept'
此时,我执行alias
,依然可以看到alias codecept='/Users/yuan/.composer/vendor/bin/codecept'
所以,我很好奇执行ln -s
命令创建的软链接是否会在某个配置文件里,添加类似alias codecept='/Users/yuan/.composer/vendor/bin/codecept'
这样的映射关系??如果添加了,是哪个文件呢?如果没有添加,那是如何使/usr/local/bin/codecept
指向~/.composer/vendor/bin/codecept
的呢?
我使用的系统是,os X 10.10.5,我尝试cat
以下几个文件:
~/.bash_profile
/etc/profile
/etc/paths
都没有发现踪迹~~
希望知道的人可以告诉我,谢谢?
我查阅了《鸟哥的Linux私房菜》,获得了一些结果。大家有兴趣可以看原书第八章-第二节-实体链接与符号链接的内容。下面我简单分享一下书中的内容:
在文件系统中,会将一个文件分为两部分存储。inode,纪录文件的权限和属性;block data,纪录文件的实际内容。所以每个文件都会占用一个node,inode内有文件放置数据的block号码~
我们使用ln -s
命令创建的符号链接(类似windows桌面快捷方式),其实是新创建了一个新的文件,这个文件有自己的inode,这个文件的block放置的是我们要关联的那个文件的路径。通过访问文件路径,获取到该关联文件的inode;获取到inode号码,就可以知道block号码,然后获取到关联文件的内容。
关系图,如下:
我们使用ls -l
命令,可查看到该目录下所有文件的情况。你会发现新创建的文件,后面有一个小箭头(-->),右边即是文件名~~这就是符号链接的原理~
这篇关于bash - os x 执行创建软链接命令ln -s ,创建的软链接在哪个文件里?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!