bash - os x 执行创建软链接命令ln -s ,创建的软链接在哪个文件里?

查看:97
本文介绍了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屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆